Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
Orekit
Orekit
Commits
d5ed2442
Commit
d5ed2442
authored
Jan 20, 2022
by
Luc Maisonobe
Browse files
Merge branch 'issue-833' into develop
parents
6a590caf
b7deadcc
Pipeline
#1675
failed with stages
in 29 minutes and 9 seconds
Changes
26
Pipelines
1
Hide whitespace changes
Inline
Side-by-side
src/changes/changes.xml
View file @
d5ed2442
...
...
@@ -21,6 +21,16 @@
</properties>
<body>
<release
version=
"11.1"
date=
"TBD"
description=
"TBD"
>
<action
dev=
"luc"
type=
"fix"
issue=
"884"
>
Deprecated TimeSpanMap.getTransitions()
</action>
<action
dev=
"luc"
type=
"fix"
issue=
"885"
>
Allow to enter the same transition date in TimeSpanMap several times
</action>
<action
dev=
"luc"
type=
"fix"
issue=
"833"
>
Added a way to erase all earlier/later transitions when adding an entry
and added addValidBetween to TimeSpanMap.
</action>
<action
dev=
"bryan"
type=
"add"
>
Added a new and simpler API for State Transition Matrix and Jacobian
matrix computation for analytical orbit propagators.
...
...
src/main/java/org/orekit/attitudes/AttitudesSequence.java
View file @
d5ed2442
...
...
@@ -383,7 +383,7 @@ public class AttitudesSequence implements AttitudeProvider {
// reset the transition parameters (this will be done once for each switch,
// despite doing it only once would have sufficient; its not really a problem)
forward
=
t
.
durationFrom
(
s0
.
getDate
())
>=
0.0
;
if
(
activated
.
get
Tr
ans
itions
().
size
()
>
1
)
{
if
(
activated
.
get
Sp
ans
Number
()
>
1
)
{
// remove transitions that will be overridden during upcoming propagation
if
(
forward
)
{
activated
=
activated
.
extractRange
(
AbsoluteDate
.
PAST_INFINITY
,
s0
.
getDate
().
shiftedBy
(
transitionTime
));
...
...
@@ -413,10 +413,10 @@ public class AttitudesSequence implements AttitudeProvider {
// prepare transition
final
AbsoluteDate
transitionEnd
=
date
.
shiftedBy
(
transitionTime
);
activated
.
addValidAfter
(
new
TransitionProvider
(
s
.
getAttitude
(),
transitionEnd
),
date
);
activated
.
addValidAfter
(
new
TransitionProvider
(
s
.
getAttitude
(),
transitionEnd
),
date
,
false
);
// prepare future law after transition
activated
.
addValidAfter
(
future
,
transitionEnd
);
activated
.
addValidAfter
(
future
,
transitionEnd
,
false
);
// notify about the switch
if
(
switchHandler
!=
null
)
{
...
...
@@ -436,10 +436,10 @@ public class AttitudesSequence implements AttitudeProvider {
}
// prepare transition
activated
.
addValidBefore
(
new
TransitionProvider
(
sAttitude
,
date
),
date
);
activated
.
addValidBefore
(
new
TransitionProvider
(
sAttitude
,
date
),
date
,
false
);
// prepare past law before transition
activated
.
addValidBefore
(
past
,
sOrbit
.
getDate
());
activated
.
addValidBefore
(
past
,
sOrbit
.
getDate
()
,
false
);
// notify about the switch
if
(
switchHandler
!=
null
)
{
...
...
src/main/java/org/orekit/estimation/measurements/generation/EventBasedScheduler.java
View file @
d5ed2442
...
...
@@ -158,10 +158,10 @@ public class EventBasedScheduler<T extends ObservedMeasurement<T>> extends Abstr
// store either status or its opposite according to propagation direction
if
(
forward
)
{
// forward propagation
feasibility
.
addValidAfter
(
statusAfter
,
s
.
getDate
());
feasibility
.
addValidAfter
(
statusAfter
,
s
.
getDate
()
,
false
);
}
else
{
// backward propagation
feasibility
.
addValidBefore
(!
statusAfter
,
s
.
getDate
());
feasibility
.
addValidBefore
(!
statusAfter
,
s
.
getDate
()
,
false
);
}
// delegate to wrapped detector
...
...
src/main/java/org/orekit/files/sinex/SinexLoader.java
View file @
d5ed2442
...
...
@@ -239,7 +239,7 @@ public class SinexLoader {
final
Station
station
=
getStation
(
parseString
(
line
,
1
,
4
));
// check if it is the first eccentricity entry for this station
if
(
station
.
getEccentricitiesTimeSpanMap
().
get
Tr
ans
itions
().
size
()
==
1
)
{
if
(
station
.
getEccentricitiesTimeSpanMap
().
get
Sp
ans
Number
()
==
1
)
{
// we are parsing eccentricity data for a new station
firstEcc
=
true
;
}
...
...
src/main/java/org/orekit/files/sinex/Station.java
View file @
d5ed2442
...
...
@@ -118,7 +118,7 @@ public class Station {
*/
public
AbsoluteDate
getValidFrom
()
{
if
(
validFrom
==
null
)
{
validFrom
=
eccentricitiesTimeSpanMap
.
getTransition
s
().
first
().
getDate
();
validFrom
=
eccentricitiesTimeSpanMap
.
get
First
Transition
().
getDate
();
}
return
validFrom
;
}
...
...
@@ -137,7 +137,7 @@ public class Station {
*/
public
AbsoluteDate
getValidUntil
()
{
if
(
validUntil
==
null
)
{
validUntil
=
eccentricitiesTimeSpanMap
.
getTransition
s
().
last
().
getDate
();
validUntil
=
eccentricitiesTimeSpanMap
.
get
Last
Transition
().
getDate
();
}
return
validUntil
;
}
...
...
@@ -227,7 +227,7 @@ public class Station {
* @since 11.1
*/
public
void
addStationEccentricitiesValidBefore
(
final
Vector3D
entry
,
final
AbsoluteDate
latestValidityDate
)
{
eccentricitiesTimeSpanMap
.
addValidBefore
(
entry
,
latestValidityDate
);
eccentricitiesTimeSpanMap
.
addValidBefore
(
entry
,
latestValidityDate
,
false
);
}
/** Add a station eccentricity vector entry valid after a limit date.<br>
...
...
@@ -239,7 +239,7 @@ public class Station {
* @since 11.1
*/
public
void
addStationEccentricitiesValidAfter
(
final
Vector3D
entry
,
final
AbsoluteDate
earliestValidityDate
)
{
eccentricitiesTimeSpanMap
.
addValidAfter
(
entry
,
earliestValidityDate
);
eccentricitiesTimeSpanMap
.
addValidAfter
(
entry
,
earliestValidityDate
,
false
);
}
/**
...
...
src/main/java/org/orekit/forces/drag/TimeSpanDragForce.java
View file @
d5ed2442
...
...
@@ -21,8 +21,8 @@ import java.util.List;
import
java.util.NavigableSet
;
import
java.util.stream.Stream
;
import
org.hipparchus.Field
;
import
org.hipparchus.CalculusFieldElement
;
import
org.hipparchus.Field
;
import
org.hipparchus.analysis.differentiation.DerivativeStructure
;
import
org.hipparchus.analysis.differentiation.Gradient
;
import
org.hipparchus.geometry.euclidean.threed.FieldVector3D
;
...
...
@@ -181,7 +181,7 @@ public class TimeSpanDragForce extends AbstractDragForceModel {
dragSensitiveTimeSpanMap
.
addValidBefore
(
changeDragParameterDriversNames
(
dragSensitive
,
latestValidityDate
,
DATE_BEFORE
),
latestValidityDate
);
latestValidityDate
,
false
);
}
/** Add a DragSensitive entry valid after a limit date.<br>
...
...
@@ -195,7 +195,7 @@ public class TimeSpanDragForce extends AbstractDragForceModel {
dragSensitiveTimeSpanMap
.
addValidAfter
(
changeDragParameterDriversNames
(
dragSensitive
,
earliestValidityDate
,
DATE_AFTER
),
earliestValidityDate
);
earliestValidityDate
,
false
);
}
/** Get the {@link DragSensitive} model valid at a date.
...
...
@@ -232,11 +232,21 @@ public class TimeSpanDragForce extends AbstractDragForceModel {
/** Get the {@link Transition}s of the drag sensitive time span map.
* @return the {@link Transition}s for the drag sensitive time span map
* @deprecated as of 11.1, replaced by {@link #getFirstSpan()}
*/
@Deprecated
public
NavigableSet
<
Transition
<
DragSensitive
>>
getTransitions
()
{
return
dragSensitiveTimeSpanMap
.
getTransitions
();
}
/** Get the first {@link Span time span} of the drag sensitive time span map.
* @return the first {@link Span time span} of the drag sensitive time span map
* @since 11.1
*/
public
Span
<
DragSensitive
>
getFirstSpan
()
{
return
dragSensitiveTimeSpanMap
.
getFirstSpan
();
}
/** {@inheritDoc} */
@Override
public
Vector3D
acceleration
(
final
SpacecraftState
s
,
final
double
[]
parameters
)
{
...
...
@@ -362,25 +372,17 @@ public class TimeSpanDragForce extends AbstractDragForceModel {
// Get all transitions from the TimeSpanMap
final
List
<
ParameterDriver
>
listParameterDrivers
=
new
ArrayList
<>();
final
NavigableSet
<
Transition
<
DragSensitive
>>
dragSensitiveTransitions
=
getTransitions
();
// Loop on the
transitio
ns
for
(
Transitio
n
<
DragSensitive
>
transition
:
dragSensitiveTransitions
)
{
// Add all the
"before"
parameter drivers of
each transitio
n
for
(
ParameterDriver
driver
:
transition
.
getBefore
().
getDragParametersDrivers
())
{
// Loop on the
spa
ns
for
(
Spa
n
<
DragSensitive
>
span
=
getFirstSpan
();
span
!=
null
;
span
=
span
.
next
()
)
{
// Add all the parameter drivers of
the spa
n
for
(
ParameterDriver
driver
:
span
.
getData
().
getDragParametersDrivers
())
{
// Add the driver only if the name does not exist already
if
(!
findByName
(
listParameterDrivers
,
driver
.
getName
()))
{
listParameterDrivers
.
add
(
driver
);
}
}
}
// Finally, add the "after" parameter drivers of the last transition
for
(
ParameterDriver
driver
:
dragSensitiveTransitions
.
last
().
getAfter
().
getDragParametersDrivers
())
{
// Adds only if the name does not exist already
if
(!
findByName
(
listParameterDrivers
,
driver
.
getName
()))
{
listParameterDrivers
.
add
(
driver
);
}
}
// Return an array of parameter drivers with no duplicated name
return
listParameterDrivers
;
...
...
@@ -464,10 +466,9 @@ public class TimeSpanDragForce extends AbstractDragForceModel {
// Get all transitions
final
List
<
AbsoluteDate
>
listDates
=
new
ArrayList
<>();
final
NavigableSet
<
Transition
<
DragSensitive
>>
dragSensitiveTransitions
=
getTransitions
();
// Extract all the transitions' dates
for
(
Transition
<
DragSensitive
>
transition
:
dragSensitiveTransitions
)
{
for
(
Transition
<
DragSensitive
>
transition
=
getFirstSpan
().
getEndTransition
();
transition
!=
null
;
transition
=
transition
.
next
()
)
{
listDates
.
add
(
transition
.
getDate
());
}
// Return the array of transition dates
...
...
src/main/java/org/orekit/forces/empirical/TimeSpanParametricAcceleration.java
View file @
d5ed2442
...
...
@@ -168,7 +168,7 @@ public class TimeSpanParametricAcceleration extends AbstractForceModel {
* (must be different from <b>all</b> dates already used for transitions)
*/
public
void
addAccelerationModelValidBefore
(
final
AccelerationModel
accelerationModel
,
final
AbsoluteDate
latestValidityDate
)
{
accelerationModelTimeSpanMap
.
addValidBefore
(
accelerationModel
,
latestValidityDate
);
accelerationModelTimeSpanMap
.
addValidBefore
(
accelerationModel
,
latestValidityDate
,
false
);
}
/** Add a AccelerationModel entry valid after a limit date.<br>
...
...
@@ -184,7 +184,7 @@ public class TimeSpanParametricAcceleration extends AbstractForceModel {
* (must be different from <b>all</b> dates already used for transitions)
*/
public
void
addAccelerationModelValidAfter
(
final
AccelerationModel
accelerationModel
,
final
AbsoluteDate
earliestValidityDate
)
{
accelerationModelTimeSpanMap
.
addValidAfter
(
accelerationModel
,
earliestValidityDate
);
accelerationModelTimeSpanMap
.
addValidAfter
(
accelerationModel
,
earliestValidityDate
,
false
);
}
/** Get the {@link AccelerationModel} model valid at a date.
...
...
@@ -221,11 +221,21 @@ public class TimeSpanParametricAcceleration extends AbstractForceModel {
/** Get the {@link Transition}s of the acceleration model time span map.
* @return the {@link Transition}s for the acceleration model time span map
* @deprecated as of 11.1, replace by {@link #getFirstSpan()}
*/
@Deprecated
public
NavigableSet
<
Transition
<
AccelerationModel
>>
getTransitions
()
{
return
accelerationModelTimeSpanMap
.
getTransitions
();
}
/** Get the first {@link Span time span} of the acceleration model time span map.
* @return the first {@link Span time span} of the acceleration model time span map
* @since 11.1
*/
public
Span
<
AccelerationModel
>
getFirstSpan
()
{
return
accelerationModelTimeSpanMap
.
getFirstSpan
();
}
/** {@inheritDoc} */
@Override
public
boolean
dependsOnPositionOnly
()
{
...
...
@@ -321,12 +331,11 @@ public class TimeSpanParametricAcceleration extends AbstractForceModel {
// Get all transitions from the TimeSpanMap
final
List
<
ParameterDriver
>
listParameterDrivers
=
new
ArrayList
<>();
final
NavigableSet
<
Transition
<
AccelerationModel
>>
accelerationModelTransitions
=
getTransitions
();
// Loop on the
transitio
ns
for
(
Transitio
n
<
AccelerationModel
>
transition
:
accelerationModelTransitions
)
{
// Add all the
"before"
parameter drivers of
each transitio
n
for
(
ParameterDriver
driver
:
transition
.
getBefore
().
getParametersDrivers
())
{
// Loop on the
spa
ns
for
(
Spa
n
<
AccelerationModel
>
span
=
getFirstSpan
();
span
!=
null
;
span
=
span
.
next
()
)
{
// Add all the parameter drivers of
the time spa
n
for
(
ParameterDriver
driver
:
span
.
getData
().
getParametersDrivers
())
{
// Add the driver only if the name does not exist already
if
(!
findByName
(
listParameterDrivers
,
driver
.
getName
()))
{
listParameterDrivers
.
add
(
driver
);
...
...
@@ -334,14 +343,6 @@ public class TimeSpanParametricAcceleration extends AbstractForceModel {
}
}
// Finally, add the "after" parameter drivers of the last transition
for
(
ParameterDriver
driver
:
accelerationModelTransitions
.
last
().
getAfter
().
getParametersDrivers
())
{
// Adds only if the name does not exist already
if
(!
findByName
(
listParameterDrivers
,
driver
.
getName
()))
{
listParameterDrivers
.
add
(
driver
);
}
}
// Return an array of parameter drivers with no duplicated name
return
Collections
.
unmodifiableList
(
listParameterDrivers
);
...
...
src/main/java/org/orekit/forces/maneuvers/jacobians/TriggerDate.java
View file @
d5ed2442
...
...
@@ -271,9 +271,9 @@ public class TriggerDate
// store contribution factor for derivatives scm = ±(∂y₁/∂y₀)⁻¹ fₘ(t₁, y₁)
final
double
[]
c
=
new
QRDecomposition
(
dY1dY0
,
DECOMPOSITION_THRESHOLD
).
getSolver
().
solve
(
rhs
).
toArray
();
if
(
forward
)
{
contribution
.
addValidAfter
(
c
,
state
.
getDate
());
contribution
.
addValidAfter
(
c
,
state
.
getDate
()
,
false
);
}
else
{
contribution
.
addValidBefore
(
c
,
state
.
getDate
());
contribution
.
addValidBefore
(
c
,
state
.
getDate
()
,
false
);
}
// return unchanged state
...
...
src/main/java/org/orekit/forces/maneuvers/trigger/AbstractManeuverTriggers.java
View file @
d5ed2442
...
...
@@ -67,9 +67,9 @@ public abstract class AbstractManeuverTriggers implements ManeuverTriggers {
if
(
isFiringOnInitialState
(
initialState
,
forward
))
{
if
(
forward
)
{
firings
.
addValidAfter
(
Boolean
.
TRUE
,
initialState
.
getDate
());
firings
.
addValidAfter
(
Boolean
.
TRUE
,
initialState
.
getDate
()
,
false
);
}
else
{
firings
.
addValidBefore
(
Boolean
.
TRUE
,
initialState
.
getDate
());
firings
.
addValidBefore
(
Boolean
.
TRUE
,
initialState
.
getDate
()
,
false
);
}
}
...
...
@@ -92,9 +92,9 @@ public abstract class AbstractManeuverTriggers implements ManeuverTriggers {
if
(
isFiringOnInitialState
(
initialState
.
toSpacecraftState
(),
forward
))
{
if
(
forward
)
{
firings
.
addValidAfter
(
Boolean
.
TRUE
,
initialState
.
getDate
().
toAbsoluteDate
());
firings
.
addValidAfter
(
Boolean
.
TRUE
,
initialState
.
getDate
().
toAbsoluteDate
()
,
false
);
}
else
{
firings
.
addValidBefore
(
Boolean
.
TRUE
,
initialState
.
getDate
().
toAbsoluteDate
());
firings
.
addValidBefore
(
Boolean
.
TRUE
,
initialState
.
getDate
().
toAbsoluteDate
()
,
false
);
}
}
...
...
src/main/java/org/orekit/forces/maneuvers/trigger/IntervalEventTrigger.java
View file @
d5ed2442
...
...
@@ -196,9 +196,9 @@ public abstract class IntervalEventTrigger<T extends AbstractDetector<T>> extend
@Override
public
Action
eventOccurred
(
final
SpacecraftState
s
,
final
T
detector
,
final
boolean
increasing
)
{
if
(
forward
)
{
getFirings
().
addValidAfter
(
increasing
,
s
.
getDate
());
getFirings
().
addValidAfter
(
increasing
,
s
.
getDate
()
,
false
);
}
else
{
getFirings
().
addValidBefore
(!
increasing
,
s
.
getDate
());
getFirings
().
addValidBefore
(!
increasing
,
s
.
getDate
()
,
false
);
}
notifyResetters
(
s
,
increasing
);
return
Action
.
RESET_STATE
;
...
...
@@ -233,9 +233,9 @@ public abstract class IntervalEventTrigger<T extends AbstractDetector<T>> extend
@Override
public
Action
eventOccurred
(
final
FieldSpacecraftState
<
S
>
s
,
final
D
detector
,
final
boolean
increasing
)
{
if
(
forward
)
{
getFirings
().
addValidAfter
(
increasing
,
s
.
getDate
().
toAbsoluteDate
());
getFirings
().
addValidAfter
(
increasing
,
s
.
getDate
().
toAbsoluteDate
()
,
false
);
}
else
{
getFirings
().
addValidBefore
(!
increasing
,
s
.
getDate
().
toAbsoluteDate
());
getFirings
().
addValidBefore
(!
increasing
,
s
.
getDate
().
toAbsoluteDate
()
,
false
);
}
notifyResetters
(
s
,
increasing
);
return
Action
.
RESET_STATE
;
...
...
src/main/java/org/orekit/forces/maneuvers/trigger/StartStopEventsTrigger.java
View file @
d5ed2442
...
...
@@ -301,9 +301,9 @@ public abstract class StartStopEventsTrigger<A extends AbstractDetector<A>, O ex
if
(
increasing
)
{
// the event is meaningful for maneuver firing
if
(
forward
)
{
getFirings
().
addValidAfter
(
true
,
s
.
getDate
());
getFirings
().
addValidAfter
(
true
,
s
.
getDate
()
,
false
);
}
else
{
getFirings
().
addValidBefore
(
false
,
s
.
getDate
());
getFirings
().
addValidBefore
(
false
,
s
.
getDate
()
,
false
);
}
notifyResetters
(
s
,
true
);
return
Action
.
RESET_STATE
;
...
...
@@ -340,9 +340,9 @@ public abstract class StartStopEventsTrigger<A extends AbstractDetector<A>, O ex
if
(
increasing
)
{
// the event is meaningful for maneuver firing
if
(
forward
)
{
getFirings
().
addValidAfter
(
false
,
s
.
getDate
());
getFirings
().
addValidAfter
(
false
,
s
.
getDate
()
,
false
);
}
else
{
getFirings
().
addValidBefore
(
true
,
s
.
getDate
());
getFirings
().
addValidBefore
(
true
,
s
.
getDate
()
,
false
);
}
notifyResetters
(
s
,
false
);
return
Action
.
RESET_STATE
;
...
...
@@ -383,9 +383,9 @@ public abstract class StartStopEventsTrigger<A extends AbstractDetector<A>, O ex
if
(
increasing
)
{
// the event is meaningful for maneuver firing
if
(
forward
)
{
getFirings
().
addValidAfter
(
true
,
s
.
getDate
().
toAbsoluteDate
());
getFirings
().
addValidAfter
(
true
,
s
.
getDate
().
toAbsoluteDate
()
,
false
);
}
else
{
getFirings
().
addValidBefore
(
false
,
s
.
getDate
().
toAbsoluteDate
());
getFirings
().
addValidBefore
(
false
,
s
.
getDate
().
toAbsoluteDate
()
,
false
);
}
notifyResetters
(
s
,
true
);
return
Action
.
RESET_STATE
;
...
...
@@ -426,9 +426,9 @@ public abstract class StartStopEventsTrigger<A extends AbstractDetector<A>, O ex
if
(
increasing
)
{
// the event is meaningful for maneuver firing
if
(
forward
)
{
getFirings
().
addValidAfter
(
false
,
s
.
getDate
().
toAbsoluteDate
());
getFirings
().
addValidAfter
(
false
,
s
.
getDate
().
toAbsoluteDate
()
,
false
);
}
else
{
getFirings
().
addValidBefore
(
true
,
s
.
getDate
().
toAbsoluteDate
());
getFirings
().
addValidBefore
(
true
,
s
.
getDate
().
toAbsoluteDate
()
,
false
);
}
notifyResetters
(
s
,
false
);
return
Action
.
RESET_STATE
;
...
...
src/main/java/org/orekit/gnss/antenna/AntexLoader.java
View file @
d5ed2442
...
...
@@ -108,7 +108,7 @@ public class AntexLoader {
final
TimeSpanMap
<
SatelliteAntenna
>
existing
=
findSatelliteAntenna
(
antenna
.
getSatelliteSystem
(),
antenna
.
getPrnNumber
());
// this is an update for a satellite antenna, with new time span
existing
.
addValidAfter
(
antenna
,
antenna
.
getValidFrom
());
existing
.
addValidAfter
(
antenna
,
antenna
.
getValidFrom
()
,
false
);
}
catch
(
OrekitException
oe
)
{
// this is a new satellite antenna
satellitesAntennas
.
add
(
new
TimeSpanMap
<>(
antenna
));
...
...
@@ -133,7 +133,7 @@ public class AntexLoader {
satellitesAntennas
.
stream
().
filter
(
m
->
{
final
SatelliteAntenna
first
=
m
.
get
Transitions
().
first
().
getBefore
();
final
SatelliteAntenna
first
=
m
.
get
FirstSpan
().
getData
();
return
first
.
getSatelliteSystem
()
==
satelliteSystem
&&
first
.
getPrnNumber
()
==
prnNumber
;
}).
findFirst
();
...
...
src/main/java/org/orekit/gnss/clock/RinexClock.java
View file @
d5ed2442
...
...
@@ -570,9 +570,9 @@ public class RinexClock {
public
void
addReferenceClockList
(
final
List
<
ReferenceClock
>
referenceClockList
,
final
AbsoluteDate
startDate
)
{
if
(
referenceClocks
==
null
)
{
referenceClocks
=
new
TimeSpanMap
<
List
<
ReferenceClock
>>(
referenceClockList
);
referenceClocks
=
new
TimeSpanMap
<
>(
null
);
}
referenceClocks
.
addValidAfter
(
referenceClockList
,
startDate
);
referenceClocks
.
addValidAfter
(
referenceClockList
,
startDate
,
false
);
}
/** Getter for the frame name.
...
...
src/main/java/org/orekit/models/earth/troposphere/TimeSpanEstimatedTroposphericModel.java
View file @
d5ed2442
...
...
@@ -31,6 +31,7 @@ import org.orekit.time.TimeScale;
import
org.orekit.time.TimeScalesFactory
;
import
org.orekit.utils.ParameterDriver
;
import
org.orekit.utils.TimeSpanMap
;
import
org.orekit.utils.TimeSpanMap.Span
;
import
org.orekit.utils.TimeSpanMap.Transition
;
/**
...
...
@@ -89,25 +90,17 @@ public class TimeSpanEstimatedTroposphericModel implements DiscreteTroposphericM
// Get all transitions from the TimeSpanMap
final
List
<
ParameterDriver
>
listTroposphericParameterDrivers
=
new
ArrayList
<>();
final
NavigableSet
<
Transition
<
EstimatedTroposphericModel
>>
troposphericModelTransitions
=
getTransitions
();
// Loop on the
transitio
ns
for
(
Transitio
n
<
EstimatedTroposphericModel
>
transition
:
troposphericModelTransitions
)
{
// Add all the
"before"
parameter drivers of each
transitio
n
for
(
ParameterDriver
tropoDriver
:
transition
.
getBefore
().
getParametersDrivers
())
{
// Loop on the
spa
ns
for
(
Spa
n
<
EstimatedTroposphericModel
>
span
=
getFirstSpan
();
span
!=
null
;
span
=
span
.
next
()
)
{
// Add all the parameter drivers of each
spa
n
for
(
ParameterDriver
tropoDriver
:
span
.
getData
().
getParametersDrivers
())
{
// Add the driver only if the name does not exist already
if
(!
findByName
(
listTroposphericParameterDrivers
,
tropoDriver
.
getName
()))
{
listTroposphericParameterDrivers
.
add
(
tropoDriver
);
}
}
}
// Finally, add the "after" parameter drivers of the last transition
for
(
ParameterDriver
tropoDriver
:
troposphericModelTransitions
.
last
().
getAfter
().
getParametersDrivers
())
{
// Adds only if the name does not exist already
if
(!
findByName
(
listTroposphericParameterDrivers
,
tropoDriver
.
getName
()))
{
listTroposphericParameterDrivers
.
add
(
tropoDriver
);
}
}
// Return an array of parameter drivers with no duplicated name
return
listTroposphericParameterDrivers
;
...
...
@@ -125,7 +118,7 @@ public class TimeSpanEstimatedTroposphericModel implements DiscreteTroposphericM
troposphericModelMap
.
addValidBefore
(
changeTroposphericParameterDriversNames
(
model
,
latestValidityDate
,
DATE_BEFORE
),
latestValidityDate
);
latestValidityDate
,
false
);
}
/** Add a EstimatedTroposphericModel entry valid after a limit date.<br>
...
...
@@ -139,7 +132,7 @@ public class TimeSpanEstimatedTroposphericModel implements DiscreteTroposphericM
troposphericModelMap
.
addValidAfter
(
changeTroposphericParameterDriversNames
(
model
,
earliestValidityDate
,
DATE_AFTER
),
earliestValidityDate
);
earliestValidityDate
,
false
);
}
/** Get the {@link EstimatedTroposphericModel} model valid at a date.
...
...
@@ -152,11 +145,21 @@ public class TimeSpanEstimatedTroposphericModel implements DiscreteTroposphericM
/** Get the {@link Transition}s of the tropospheric model time span map.
* @return the {@link Transition}s for the tropospheric model time span map
* @deprecated as of 11.1, replaced by {@link #getFirstSpan()}
*/
@Deprecated
public
NavigableSet
<
Transition
<
EstimatedTroposphericModel
>>
getTransitions
()
{
return
troposphericModelMap
.
getTransitions
();
}
/** Get the first {@link Span time span} of the tropospheric model time span map.
* @return the first {@link Span time span} of the tropospheric model time span map
* @since 11.1
*/
public
Span
<
EstimatedTroposphericModel
>
getFirstSpan
()
{
return
troposphericModelMap
.
getFirstSpan
();
}
/** Extract the proper parameter drivers' values from the array in input of the
* {@link #pathDelay(double, GeodeticPoint, double[], AbsoluteDate) pathDelay} method.
* Parameters are filtered given an input date.
...
...
src/main/java/org/orekit/propagation/AbstractPropagator.java
View file @
d5ed2442
...
...
@@ -302,9 +302,9 @@ public abstract class AbstractPropagator implements Propagator {
if
(
tsm
!=
null
)
{
// this is an unmanaged state
if
(
forward
)
{
tsm
.
addValidAfter
(
changed
.
getValue
(),
date
);
tsm
.
addValidAfter
(
changed
.
getValue
(),
date
,
false
);
}
else
{
tsm
.
addValidBefore
(
changed
.
getValue
(),
date
);
tsm
.
addValidBefore
(
changed
.
getValue
(),
date
,
false
);
}
}
}
...
...
src/main/java/org/orekit/propagation/analytical/BrouwerLyddanePropagator.java
View file @
d5ed2442
...
...
@@ -516,9 +516,9 @@ public class BrouwerLyddanePropagator extends AbstractAnalyticalPropagator {
final
BLModel
newModel
=
computeMeanParameters
((
KeplerianOrbit
)
OrbitType
.
KEPLERIAN
.
convertType
(
state
.
getOrbit
()),
state
.
getMass
());
if
(
forward
)
{
models
.
addValidAfter
(
newModel
,
state
.
getDate
());
models
.
addValidAfter
(
newModel
,
state
.
getDate
()
,
false
);
}
else
{
models
.
addValidBefore
(
newModel
,
state
.
getDate
());
models
.
addValidBefore
(
newModel
,
state
.
getDate
()
,
false
);
}
stateChanged
(
state
);
}
...
...
src/main/java/org/orekit/propagation/analytical/EcksteinHechlerPropagator.java
View file @
d5ed2442
...
...
@@ -470,9 +470,9 @@ public class EcksteinHechlerPropagator extends AbstractAnalyticalPropagator {
final
EHModel
newModel
=
computeMeanParameters
((
CircularOrbit
)
OrbitType
.
CIRCULAR
.
convertType
(
state
.
getOrbit
()),
state
.
getMass
());
if
(
forward
)
{
models
.
addValidAfter
(
newModel
,
state
.
getDate
());
models
.
addValidAfter
(
newModel
,
state
.
getDate
()
,
false
);
}
else
{
models
.
addValidBefore
(
newModel
,
state
.
getDate
());
models
.
addValidBefore
(
newModel
,
state
.
getDate
()
,
false
);
}
stateChanged
(
state
);
}
...
...
src/main/java/org/orekit/propagation/analytical/KeplerianPropagator.java
View file @
d5ed2442
...
...
@@ -167,9 +167,9 @@ public class KeplerianPropagator extends AbstractAnalyticalPropagator {
/** {@inheritDoc} */
protected
void
resetIntermediateState
(
final
SpacecraftState
state
,
final
boolean
forward
)
{
if
(
forward
)
{
states
.
addValidAfter
(
state
,
state
.
getDate
());
states
.
addValidAfter
(
state
,
state
.
getDate
()
,
false
);
}
else
{
states
.
addValidBefore
(
state
,
state
.
getDate
());
states
.
addValidBefore
(
state
,
state
.
getDate
()
,
false
);
}
stateChanged
(
state
);
}
...
...
src/main/java/org/orekit/propagation/events/PositionAngleDetector.java
View file @
d5ed2442
...
...
@@ -219,9 +219,9 @@ public class PositionAngleDetector extends AbstractDetector<PositionAngleDetecto
estimator
=
new
OffsetEstimator
(
orbit
,
delta
);
delta
=
estimator
.
delta
(
orbit
);
if
(
isForward
())
{
offsetEstimators
.
addValidAfter
(
estimator
,
handover
.
getDate
());
offsetEstimators
.
addValidAfter
(
estimator
,
handover
.
getDate
()
,
false
);
}
else
{
offsetEstimators
.
addValidBefore
(
estimator
,
handover
.
getDate
());
offsetEstimators
.
addValidBefore
(
estimator
,
handover
.
getDate
()
,
false
);
}
}
...
...
src/main/java/org/orekit/propagation/semianalytical/dsst/forces/AbstractGaussianContribution.java
View file @
d5ed2442
...
...
@@ -1829,12 +1829,12 @@ public abstract class AbstractGaussianContribution implements DSSTForceModel {
final
AbsoluteDate
last
=
meanStates
[
meanStates
.
length
-
1
].
getDate
();
final
int
compare
=
first
.
compareTo
(
last
);
if
(
compare
<
0
)
{
slots
.
addValidAfter
(
slot
,
first
);
slots
.
addValidAfter
(
slot
,
first
,
false
);