User Manual 4.14 Ephemeris : Différence entre versions

De Wiki
Aller à : navigation, rechercher
(Page créée avec « == Introduction == === Scope === This section describes the propagation of spacecraftstates based on interpolation of position velocity ephemeris. === Javadoc === The co... »)
 
 
(Une révision intermédiaire par le même utilisateur non affichée)
Ligne 13 : Ligne 13 :
 
|-
 
|-
 
|Patrius
 
|Patrius
|[{{JavaDoc4.13}}/fr/cnes/sirius/patrius/utils/package-summary.html Package fr.cnes.sirius.patrius.utils]
+
|[{{JavaDoc4.14}}/fr/cnes/sirius/patrius/utils/package-summary.html Package fr.cnes.sirius.patrius.utils]
 
|-
 
|-
 
|Patrius
 
|Patrius
|[{{JavaDoc4.13}}/fr/cnes/sirius/patrius/propagation/package-summary.html Package fr.cnes.sirius.patrius.propagation]
+
|[{{JavaDoc4.14}}/fr/cnes/sirius/patrius/propagation/package-summary.html Package fr.cnes.sirius.patrius.propagation]
 
|}
 
|}
  
Ligne 72 : Ligne 72 :
 
Two classes provide PVCoordinates at a given date from an ephemeris interpolation :
 
Two classes provide PVCoordinates at a given date from an ephemeris interpolation :
  
* <code>EphemerisPvLagrange</code> : Computes the PVCoordinates using a Lagrange interpolation of the ephemeris
+
* <code>EphemerisPvLagrange</code> : Computes the PVCoordinates using a Hermite interpolation (<code>HermiteInterpolator</code>) 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 - <code>PolynomialFunctionLagrangeForm</code> - by a factor 4).
  
 
* <code>EphemerisPvHermite</code> : Computes the PVCoordinates using a Hermite interpolation of the ephemeris
 
* <code>EphemerisPvHermite</code> : Computes the PVCoordinates using a Hermite interpolation of the ephemeris
Ligne 81 : Ligne 81 :
  
 
Intermediate states are computed with a Lagrange interpolator (order 8 by default) which :
 
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.  
 
* expects that spacecraft states are chronologically sorted (duplicates are allowed). If not sorted, no exception will be thrown and result might be wrong.  
Ligne 122 : Ligne 121 :
 
|'''IntegratedEphemeris'''
 
|'''IntegratedEphemeris'''
 
|This class stores sequentially generated orbital parameters for later retrieval.
 
|This class stores sequentially generated orbital parameters for later retrieval.
|[{{JavaDoc4.13}}/fr/cnes/sirius/patrius/propagation/precomputed/IntegratedEphemeris.html ...]
+
|[{{JavaDoc4.14}}/fr/cnes/sirius/patrius/propagation/precomputed/IntegratedEphemeris.html ...]
 
|-
 
|-
 
|'''Ephemeris'''
 
|'''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.
 
|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.
|[{{JavaDoc4.13}}/fr/cnes/sirius/patrius/propagation/precomputed/Ephemeris.html ...]
+
|[{{JavaDoc4.14}}/fr/cnes/sirius/patrius/propagation/precomputed/Ephemeris.html ...]
 
|-
 
|-
 
|'''EphemerisPvLagrange'''
 
|'''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.
+
|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 <code>AbstractEphemerisPvHermiteLagrange</code>.
|[{{JavaDoc4.13}}/fr/cnes/sirius/patrius/orbits/pvcoordinates/EphemerisPvLagrange.html ...]
+
|[{{JavaDoc4.14}}/fr/cnes/sirius/patrius/orbits/pvcoordinates/EphemerisPvLagrange.html ...]
 
|-
 
|-
 
|'''EphemerisPvHermite'''
 
|'''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.
+
|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 <code>AbstractEphemerisPvHermiteLagrange</code>.
|[{{JavaDoc4.13}}/fr/cnes/sirius/patrius/orbits/pvcoordinates/EphemerisPvHermite.html ...]
+
|[{{JavaDoc4.14}}/fr/cnes/sirius/patrius/orbits/pvcoordinates/EphemerisPvHermite.html ...]
 
|-
 
|-
 
|'''PVCoordinatesPropagator'''
 
|'''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'''.  
 
|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'''.  
|[{{JavaDoc4.13}}/fr/cnes/sirius/patrius/propagation/PVCoordinatesPropagator.html ...]
+
|[{{JavaDoc4.14}}/fr/cnes/sirius/patrius/propagation/PVCoordinatesPropagator.html ...]
 
|-
 
|-
 
|'''SimpleAdditionalStateProvider'''
 
|'''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'''.  
 
|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'''.  
|[{{JavaDoc4.13}}/fr/cnes/sirius/patrius/propagation/SimpleAdditionalStateProvider.html ...]
+
|[{{JavaDoc4.14}}/fr/cnes/sirius/patrius/propagation/SimpleAdditionalStateProvider.html ...]
 
|-
 
|-
 
|'''AlmanacPVCoordinates'''
 
|'''AlmanacPVCoordinates'''
 
|This class computes PV coordinates at any date from a GPS or Galileo Almanac.  
 
|This class computes PV coordinates at any date from a GPS or Galileo Almanac.  
|[{{JavaDoc4.13}}/fr/cnes/sirius/patrius/orbits/pvcoordinates/AlmanacPVCoordinates.html ...]
+
|[{{JavaDoc4.14}}/fr/cnes/sirius/patrius/orbits/pvcoordinates/AlmanacPVCoordinates.html ...]
 
|}
 
|}
  
 
[[Category:User_Manual_4.14_Orbit_Propagation]]
 
[[Category:User_Manual_4.14_Orbit_Propagation]]

Version actuelle en date du 2 septembre 2024 à 09:01

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. ...