User Manual 3.3 Ephemeris : Différence entre versions

De Wiki
Aller à : navigation, rechercher
(Package Overview)
Ligne 27 : Ligne 27 :
  
 
=== Package Overview ===
 
=== Package Overview ===
See the [ORB_PRO_PkgOverview Propagator ] page for more generic information about propagators.
+
See the [[User Manual 3.3 Numerical propagation#Package Overview|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:
 
Propagation based on interpolation of position velocity ephemeris has been design to be very simple to use:

Version du 1 mars 2018 à 13:25

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
Orekit Package org.orekit.utils
Patrius Package fr.cnes.sirius.patrius.propagation

Links

Useful Documents

None as of now.

Package Overview

See the 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

PVCoordinatePropagator

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 Lagrange interpolation of the ephemeris
  • 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. GPS and Galileo almanacs can be provided using GPSAlmanacParameter or GalileoAlmanacParameter classes.

Getting Started

Modèle:SpecialInclusion prefix=$theme sub section="GettingStarted"/

Contents

Interfaces

None as of now.

Classes

|=(% colspan="3" %)Class|=(% colspan="6" %)Summary|=(% colspan="1" %)Javadoc |(% colspan="3" %)IntegratedEphemeris|(% colspan="6" %)This class stores sequentially generated orbital parameters for later retrieval.|(% colspan="1" %)... |(% colspan="3" %)Ephemeris|(% colspan="6" %)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.|(% colspan="1" %)... |(% colspan="3" %)AbstractEphemeris|(% colspan="6" %)This abstract class extends AbstractPropagator and implements BoundedPropagator. It contains some utility methods : to get the first and the last dates from a spacecraft states array whose length is controlled (>2), to get all the PV coordinates for all the interpolation points in one matrix.|(% colspan="1" %)... |(% colspan="3" %)LagrangeEphemeris|(% colspan="6" %) Deprecated since 3.1|(% colspan="1" %)... |(% colspan="3" %)HermiteEphemeris|(% colspan="6" %) Deprecated since 3.1|(% colspan="1" %)... |(% colspan="3" %)EphemerisPvLagrange|(% colspan="6" %)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.|(% colspan="1" %)... |(% colspan="3" %)EphemerisPvHermite|(% colspan="6" %)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.|(% colspan="1" %)... |(% colspan="3" %)PVCoordinatePropagator|(% colspan="6" %)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 getPvCoordinate 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. |(% colspan="1" %)... |(% colspan="3" %)SimpleAdditionalStateProvider|(% colspan="6" %)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 PVCoordinatePropagator. |(% colspan="1" %)... |(% colspan="3" %)AlmanacPVCoordinates|(% colspan="6" %)This class computes PV coordinates at any date from a GPS or Galileo Almanac. |(% colspan="1" %)...

Tutorials

Tutorial 1

Modèle:SpecialInclusion prefix=$theme sub section="Tuto1"/

Tutorial 2

Modèle:SpecialInclusion prefix=$theme sub section="Tuto2"/

LightBulb.png Tips & Tricks

Modèle:SpecialInclusion prefix=$theme sub section="Tips"/