public class Ephemeris extends AbstractAnalyticalPropagator implements BoundedPropagator
DEFAULT_MASS
Constructor and Description |
---|
Ephemeris(List<SpacecraftState> states,
int interpolationPoints)
Legacy constructor with tabulated states and default Hermite interpolation.
|
Ephemeris(List<SpacecraftState> states,
TimeInterpolator<SpacecraftState> stateInterpolator)
Constructor with tabulated states.
|
Ephemeris(List<SpacecraftState> states,
TimeInterpolator<SpacecraftState> stateInterpolator,
AttitudeProvider attitudeProvider)
Constructor with tabulated states.
|
Ephemeris(List<SpacecraftState> states,
TimeInterpolator<SpacecraftState> stateInterpolator,
List<StateCovariance> covariances,
TimeInterpolator<TimeStampedPair<Orbit,StateCovariance>> covarianceInterpolator)
Constructor with tabulated states and associated covariances.
|
Ephemeris(List<SpacecraftState> states,
TimeInterpolator<SpacecraftState> stateInterpolator,
List<StateCovariance> covariances,
TimeInterpolator<TimeStampedPair<Orbit,StateCovariance>> covarianceInterpolator,
AttitudeProvider attitudeProvider)
Constructor with tabulated states and associated covariances.
|
Modifier and Type | Method and Description |
---|---|
SpacecraftState |
basicPropagate(AbsoluteDate date)
Propagate an orbit without any fancy features.
|
static void |
checkInputConsistency(List<SpacecraftState> states,
TimeInterpolator<SpacecraftState> stateInterpolator,
List<StateCovariance> covariances,
TimeInterpolator<TimeStampedPair<Orbit,StateCovariance>> covarianceInterpolator)
Check input consistency between states, covariances and their associated interpolators.
|
static void |
checkStatesAndCovariancesConsistency(List<SpacecraftState> states,
List<StateCovariance> covariances)
Check that given states and covariances are consistent.
|
protected AbstractMatricesHarvester |
createHarvester(String stmName,
org.hipparchus.linear.RealMatrix initialStm,
DoubleArrayDictionary initialJacobianColumns)
Create the harvester suitable for propagator.
|
Optional<StateCovariance> |
getCovariance(AbsoluteDate date)
Get the covariance at given date.
|
Optional<TimeInterpolator<TimeStampedPair<Orbit,StateCovariance>>> |
getCovarianceInterpolator()
Get covariance interpolator.
|
Frame |
getFrame()
Get the frame in which the orbit is propagated.
|
SpacecraftState |
getInitialState()
Get the propagator initial state.
|
String[] |
getManagedAdditionalStates()
Get all the names of all managed states.
|
protected double |
getMass(AbsoluteDate date)
Get the mass.
|
AbsoluteDate |
getMaxDate()
Get the last date of the range.
|
AbsoluteDate |
getMinDate()
Get the first date of the range.
|
TimeInterpolator<SpacecraftState> |
getStateInterpolator()
Get state interpolator.
|
boolean |
isAdditionalStateManaged(String name)
Check if an additional state is managed.
|
protected Orbit |
propagateOrbit(AbsoluteDate date)
Extrapolate an orbit up to a specific target date.
|
void |
resetInitialState(SpacecraftState state)
Try (and fail) to reset the initial state.
|
protected void |
resetIntermediateState(SpacecraftState state,
boolean forward)
Reset an intermediate state.
|
acceptStep, addEventDetector, clearEventsDetectors, getEphemerisGenerator, getEventsDetectors, getJacobiansColumnsNames, getPvProvider, propagate
addAdditionalStateProvider, getAdditionalStateProviders, getAttitudeProvider, getHarvester, getMultiplexer, getPVCoordinates, getStartDate, initializeAdditionalStates, initializePropagation, propagate, setAttitudeProvider, setStartDate, setupMatricesComputation, stateChanged, updateAdditionalStates, updateUnmanagedStates
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
addAdditionalStateProvider, addEventDetector, clearEventsDetectors, clearStepHandlers, getAdditionalStateProviders, getAttitudeProvider, getDefaultLaw, getEphemerisGenerator, getEventsDetectors, getMultiplexer, propagate, propagate, setAttitudeProvider, setStepHandler, setStepHandler, setupMatricesComputation
getPosition, getPVCoordinates
public Ephemeris(List<SpacecraftState> states, int interpolationPoints) throws org.hipparchus.exception.MathIllegalArgumentException
As this implementation of interpolation is polynomial, it should be used only with small samples (about 10-20 points) in order to avoid Runge's phenomenon and numerical problems (including NaN appearing).
states
- list of spacecraft statesinterpolationPoints
- number of points to use in interpolationorg.hipparchus.exception.MathIllegalArgumentException
- if the number of states is smaller than the number of points to use in
interpolationOrekitIllegalArgumentException
- if states are not defined the same way (orbit or absolute
position-velocity-acceleration)Ephemeris(List, TimeInterpolator, List, TimeInterpolator)
,
SpacecraftStateInterpolator
public Ephemeris(List<SpacecraftState> states, TimeInterpolator<SpacecraftState> stateInterpolator) throws org.hipparchus.exception.MathIllegalArgumentException
states
- list of spacecraft statesstateInterpolator
- spacecraft state interpolatororg.hipparchus.exception.MathIllegalArgumentException
- if the number of states is smaller than the number of points to use in
interpolationOrekitIllegalArgumentException
- if states are not defined the same way (orbit or absolute
position-velocity-acceleration)Ephemeris(List, TimeInterpolator, List, TimeInterpolator)
public Ephemeris(List<SpacecraftState> states, TimeInterpolator<SpacecraftState> stateInterpolator, AttitudeProvider attitudeProvider) throws org.hipparchus.exception.MathIllegalArgumentException
states
- list of spacecraft statesstateInterpolator
- spacecraft state interpolatorattitudeProvider
- attitude law to use, null by defaultorg.hipparchus.exception.MathIllegalArgumentException
- if the number of states is smaller than the number of points to use in
interpolationOrekitIllegalArgumentException
- if states are not defined the same way (orbit or absolute
position-velocity-acceleration)Ephemeris(List, TimeInterpolator, List, TimeInterpolator)
public Ephemeris(List<SpacecraftState> states, TimeInterpolator<SpacecraftState> stateInterpolator, List<StateCovariance> covariances, TimeInterpolator<TimeStampedPair<Orbit,StateCovariance>> covarianceInterpolator) throws org.hipparchus.exception.MathIllegalArgumentException
states
- list of spacecraft statesstateInterpolator
- spacecraft state interpolatorcovariances
- tabulated covariances associated to tabulated states ephemeris bounds to be doing extrapolationcovarianceInterpolator
- covariance interpolatororg.hipparchus.exception.MathIllegalArgumentException
- if the number of states is smaller than the number of points to use in
interpolationOrekitIllegalArgumentException
- if states are not defined the same way (orbit or absolute
position-velocity-acceleration)OrekitIllegalArgumentException
- if number of states is different from the number of covariancesOrekitIllegalStateException
- if dates between states and associated covariances are differentEphemeris(List, TimeInterpolator, List, TimeInterpolator, AttitudeProvider)
public Ephemeris(List<SpacecraftState> states, TimeInterpolator<SpacecraftState> stateInterpolator, List<StateCovariance> covariances, TimeInterpolator<TimeStampedPair<Orbit,StateCovariance>> covarianceInterpolator, AttitudeProvider attitudeProvider) throws org.hipparchus.exception.MathIllegalArgumentException
The user is expected to explicitly define an attitude provider if they want to use one. Otherwise, it is null by default
states
- list of spacecraft statesstateInterpolator
- spacecraft state interpolatorcovariances
- tabulated covariances associated to tabulated statescovarianceInterpolator
- covariance interpolatorattitudeProvider
- attitude law to use, null by defaultorg.hipparchus.exception.MathIllegalArgumentException
- if the number of states is smaller than the number of points to use in
interpolationOrekitIllegalArgumentException
- if states are not defined the same way (orbit or absolute
position-velocity-acceleration)OrekitIllegalArgumentException
- if number of states is different from the number of covariancesOrekitIllegalStateException
- if dates between states and associated covariances are differentpublic static void checkInputConsistency(List<SpacecraftState> states, TimeInterpolator<SpacecraftState> stateInterpolator, List<StateCovariance> covariances, TimeInterpolator<TimeStampedPair<Orbit,StateCovariance>> covarianceInterpolator)
states
- spacecraft states samplestateInterpolator
- spacecraft state interpolatorcovariances
- covariances samplecovarianceInterpolator
- covariance interpolatorpublic static void checkStatesAndCovariancesConsistency(List<SpacecraftState> states, List<StateCovariance> covariances)
states
- tabulates states to checkcovariances
- tabulated covariances associated to tabulated states to checkpublic AbsoluteDate getMinDate()
getMinDate
in interface BoundedPropagator
public AbsoluteDate getMaxDate()
getMaxDate
in interface BoundedPropagator
public Frame getFrame()
The propagation frame is the definition frame of the initial state, so this method should be called after this state has been set, otherwise it may return null.
getFrame
in interface Propagator
getFrame
in class AbstractPropagator
Propagator.resetInitialState(SpacecraftState)
public Optional<StateCovariance> getCovariance(AbsoluteDate date)
BEWARE : If this instance has been created without sample of covariances and/or with spacecraft states defined with
absolute position-velocity-acceleration, it will return an empty Optional
.
date
- date at which the covariance is desiredOptional
public SpacecraftState basicPropagate(AbsoluteDate date)
This method is similar in spirit to the AbstractAnalyticalPropagator.propagate(org.orekit.time.AbsoluteDate, org.orekit.time.AbsoluteDate)
method,
except that it does not call any handler during
propagation, nor any discrete events, not additional states. It always
stop exactly at the specified date.
basicPropagate
in class AbstractAnalyticalPropagator
date
- target date for propagationprotected Orbit propagateOrbit(AbsoluteDate date)
propagateOrbit
in class AbstractAnalyticalPropagator
date
- target date for the orbitprotected double getMass(AbsoluteDate date)
getMass
in class AbstractAnalyticalPropagator
date
- target date for the orbitpublic void resetInitialState(SpacecraftState state)
This method always throws an exception, as ephemerides cannot be reset.
resetInitialState
in interface Propagator
resetInitialState
in class AbstractPropagator
state
- new initial state to considerprotected void resetIntermediateState(SpacecraftState state, boolean forward)
resetIntermediateState
in class AbstractAnalyticalPropagator
state
- new intermediate state to considerforward
- if true, the intermediate state is valid for
propagations after itselfpublic SpacecraftState getInitialState()
getInitialState
in interface Propagator
getInitialState
in class AbstractPropagator
public boolean isAdditionalStateManaged(String name)
Managed states are states for which the propagators know how to compute
its evolution. They correspond to additional states for which a
provider
has been registered by calling the
addAdditionalStateProvider
method.
Additional states that are present in the initial state
but have no evolution method registered are not considered as managed states.
These unmanaged additional states are not lost during propagation, though. Their
value are piecewise constant between state resets that may change them if some
event handler resetState
method is called at an event occurrence and happens
to change the unmanaged additional state.
isAdditionalStateManaged
in interface Propagator
isAdditionalStateManaged
in class AbstractPropagator
name
- name of the additional statepublic String[] getManagedAdditionalStates()
getManagedAdditionalStates
in interface Propagator
getManagedAdditionalStates
in class AbstractPropagator
protected AbstractMatricesHarvester createHarvester(String stmName, org.hipparchus.linear.RealMatrix initialStm, DoubleArrayDictionary initialJacobianColumns)
createHarvester
in class AbstractPropagator
stmName
- State Transition Matrix state nameinitialStm
- initial State Transition Matrix ∂Y/∂Y₀,
if null (which is the most frequent case), assumed to be 6x6 identityinitialJacobianColumns
- initial columns of the Jacobians matrix with respect to parameters,
if null or if some selected parameters are missing from the dictionary, the corresponding
initial column is assumed to be 0public TimeInterpolator<SpacecraftState> getStateInterpolator()
public Optional<TimeInterpolator<TimeStampedPair<Orbit,StateCovariance>>> getCovarianceInterpolator()
Optional
Copyright © 2002-2023 CS GROUP. All rights reserved.