User Manual 4.15 Ephemeris
Introduction
Scope
This section describes the propagation of spacecraftstates based on interpolation of position velocity ephemeris.
Javadoc
The concerned classes are avalaible in the following packages :
Library | Javadoc |
---|---|
Patrius | Package fr.cnes.sirius.patrius.utils |
Patrius | Package fr.cnes.sirius.patrius.propagation |
Links
None as of now.
Useful Documents
None as of now.
Package Overview
See the [ORB_PRO_PkgOverview Propagator ] page for more generic information about propagators.
Propagation based on interpolation of position velocity ephemeris has been design to be very simple to use:
- Ephemeris propagators extend
AbstractPropagator
class. As a result all propagators features (event detection, etc.) are available.
- Ephemeris propagators are based on a
PVCoordinateProvider
to retrieve the orbital parameters at required date.
- Implementation of
PVCoordinateProvider
based on ephemeris interpolation (Hermite, or Lagrange).
- Implementation of
AdditionalStatesProvider
based on an ephemeris of additional states.
Features Description
PVCoordinatesPropagator
The PV coordinate propagator extends AbstractPropagator
and provides a simple way to propagate an initial spacecraft state coherent with the provided PVCoordinatesProvider
and the eventual attitude and additional states provider.
The propagation of position velocity is based on the getPVCoordinates of the given PVCoordinatesProvider
.
The propagation of attitude is based on the given AttitudeProvider
.
The propagation of the additional states is based on the given AdditionalStatesProvider
.
A classical simple use case is :
-
PVCoordinatesProvider
: One of the provider based on ephemeris interpolation (Lagrange or Hermite)
-
AttitudeProvider
: Null. The attitude of the propagated spacecraft state is null.
-
AdditionalStatesProvider
: Null. The additional states of the propagated spacecraft state is null.
A classical advanced use case is to add an attitude provider and the SimpleAdditionalStateProvider described in next paragraph.
Warning: Events detector with Action.RESET_STATE
should not be used with this propagator fed with a "precomputed" PV coordinate provider (such as an ephemeris or an orbit object). In particular, impulse maneuvers cannot be used. Otherwise propagation will fail.
This is due to the fact that the provided PV coordinate provider is not valid any more after the Action.RESET_STATE
action.
SimpleAdditionalStateProvider
The SimpleAdditionalStateProvider
is an implementation of AdditionalStateProvider
based on additional states ephemeris.
The computation of an additional state for a given date is the following:
- If the given date is found in the ephemeris, the associated additional state vector is returned
- Otherwise a linera interpolation is performed.
PVCoordinateProvider Ephemeris
Two classes provide PVCoordinates at a given date from an ephemeris interpolation :
-
EphemerisPvLagrange
: Computes the PVCoordinates using a Hermite interpolation (HermiteInterpolator
) of the ephemeris without providing any derivatives on points to be interpolated (this allows to improve the computation performance with respect to a classical Lagrange approach -PolynomialFunctionLagrangeForm
- by a factor 4).
-
EphemerisPvHermite
: Computes the PVCoordinates using a Hermite interpolation of the ephemeris
Both can be built from a list of spacecraftstates or from list of dates- positions - velocities expressed in a given frame.
Lagrange interpolation
Intermediate states are computed with a Lagrange interpolator (order 8 by default) which :
- expects that spacecraft states are chronologically sorted (duplicates are allowed). If not sorted, no exception will be thrown and result might be wrong.
- is based on an instance of PolynomialFunctionLagrangeForm, which is stored at each interpolation to be reused for same interpolation interval, and updated if the interpolation is not in the same interval [math]t \in [t_{i}, t_{i+1}[[/math], where [math]i \in \left\{0, ..., N \right\}[/math] and [math]N[/math] is the size of the handled ephemeris.
The interpolation order [math]n[/math] for LagrangeEphemeris should be an even number, and the interpolation date should correspond to an index that belongs in [math]n/2- 1 \leq i \leq N-1-n/2[/math].
Hermite interpolation
Intermediate states are computed with a Hermite interpolator which :
- expects the spacecraft states to be chronologically sorted (duplicates are allowed). If not sorted, no exception will be thrown and result might be wrong.
- is based on an instance of HermiteInterpolator, which is stored at each interpolation to be reused for same interpolation interval, and updated if the interpolation is not in the same interval [math]t \in [t_{i}, t_{i+1}[[/math], where [math]i \in \left\{0, ..., N \right\}[/math] and [math]N[/math] is the size of the handled ephemeris (in closed-open convention).
For HermiteEphemeris, the interpolation can use the acceleration array if it is available.
PVCoordinateProvider AlmanacPVCoordinates
The class AlmanacPVCoordinates
extends the PVCoordinateProvider
.
It provides PVCoordinates (position and velocity) of GNSS almanacs.
Almanacs can be provided using the AlmanacGNSSParameters
class.
The classes CNAVGNSSParameters
and LNAVGNSSParameters
are simple containers for broadcast model CNAV and LNAV ephemeris description parameters of GNSS satellites (GPS and BeiDou for CNAV and GPS, BeiDou and Galileo for LNAV).
Getting Started
Modèle:SpecialInclusion prefix=$theme sub section="GettingStarted"/
Contents
Interfaces
None as of now.
Classes
Class | Summary | Javadoc |
---|---|---|
IntegratedEphemeris | This class stores sequentially generated orbital parameters for later retrieval. | ... |
Ephemeris | This class is designed to accept and handle tabulated orbital entries. Tabulated entries are classified and then extrapolated in way to obtain continuous output, with accuracy and computation methods configured by the user. | ... |
EphemerisPvLagrange | This class handles tabulated spacecraft states entries and implements PVCoordinatesProvider interface. Tabulated entries are chronologically classified. A Lagrange interpolation is perfomed to compute PV coordinates at a given date. The class is an extension is based on a common Lagrange-Hermite approch provided by class AbstractEphemerisPvHermiteLagrange .
|
... |
EphemerisPvHermite | This class handles tabulated spacecraft states entries and implements PVCoordinatesProvider interface. Tabulated entries are chronologically classified. A Hermite interpolation is perfomed to compute PV coordinates at a given date. The class is an extension is based on a common Lagrange-Hermite approch provided by class AbstractEphemerisPvHermiteLagrange .
|
... |
PVCoordinatesPropagator | This class extends AbstractPropagator. It simply implements propagate orbit method using the getPVCoordinate from the PVCoordinate provider it handles. The propagator is initialized with given initial date, frame and mu to build a coherent initial spacecraftstate. This initialisation calls the PVCoordinateProvider getPVCoordinates method to the given date which can raise an error if the date is out of bound for exemple. This class will be basically used with EphemerisPvLagrange and EphemerisPvHermite. | ... |
SimpleAdditionalStateProvider | This class implements AdditionalStateProvider interface. It simply handles a list of dates associated to additional state vectors. For a given date it returns the associated additional state vector or a propagation exception if this date is not found. This class will be basically used with PVCoordinatesPropagator. | ... |
AlmanacPVCoordinates | This class computes PV coordinates at any date from a GPS or Galileo Almanac. | ... |