Class FieldEcksteinHechlerPropagator<T extends CalculusFieldElement<T>>

Type Parameters:
T - type of the field elements
All Implemented Interfaces:
FieldPropagator<T>, FieldPVCoordinatesProvider<T>, ParameterDriversProvider

public class FieldEcksteinHechlerPropagator<T extends CalculusFieldElement<T>> extends FieldAbstractAnalyticalPropagator<T>
This class propagates a FieldSpacecraftState using the analytical Eckstein-Hechler model.

The Eckstein-Hechler model is suited for near circular orbits (e < 0.1, with poor accuracy between 0.005 and 0.1) and inclination neither equatorial (direct or retrograde) nor critical (direct or retrograde).

Author:
Guylaine Prat
See Also:
  • Constructor Details

    • FieldEcksteinHechlerPropagator

      public FieldEcksteinHechlerPropagator(FieldOrbit<T> initialOrbit, UnnormalizedSphericalHarmonicsProvider provider)
      Build a propagator from FieldOrbit and potential provider.

      Mass and attitude provider are set to unspecified non-null arbitrary values.

      Using this constructor, an initial osculating orbit is considered.

      Conversion from osculating to mean orbit is done through a fixed-point iteration process.

      Parameters:
      initialOrbit - initial FieldOrbit
      provider - for un-normalized zonal coefficients
      See Also:
    • FieldEcksteinHechlerPropagator

      public FieldEcksteinHechlerPropagator(FieldOrbit<T> initialOrbit, AttitudeProvider attitude, T mass, UnnormalizedSphericalHarmonicsProvider provider, UnnormalizedSphericalHarmonicsProvider.UnnormalizedSphericalHarmonics harmonics)
      Private helper constructor.

      Using this constructor, an initial osculating orbit is considered.

      Conversion from osculating to mean orbit is done through a fixed-point iteration process.

      Parameters:
      initialOrbit - initial FieldOrbit
      attitude - attitude provider
      mass - spacecraft mass
      provider - for un-normalized zonal coefficients
      harmonics - provider.onDate(initialOrbit.getDate())
      See Also:
    • FieldEcksteinHechlerPropagator

      public FieldEcksteinHechlerPropagator(FieldOrbit<T> initialOrbit, double referenceRadius, T mu, double c20, double c30, double c40, double c50, double c60)
      Build a propagator from FieldOrbit and potential.

      Mass and attitude provider are set to unspecified non-null arbitrary values.

      The Cn,0 coefficients are the denormalized zonal coefficients, they are related to both the normalized coefficients Cn,0 and the Jn one as follows:

      Cn,0 = [(2-δ0,m)(2n+1)(n-m)!/(n+m)!]½ Cn,0

      Cn,0 = -Jn

      Using this constructor, an initial osculating orbit is considered.

      Conversion from osculating to mean orbit is done through a fixed-point iteration process.

      Parameters:
      initialOrbit - initial FieldOrbit
      referenceRadius - reference radius of the Earth for the potential model (m)
      mu - central attraction coefficient (m³/s²)
      c20 - un-normalized zonal coefficient (about -1.08e-3 for Earth)
      c30 - un-normalized zonal coefficient (about +2.53e-6 for Earth)
      c40 - un-normalized zonal coefficient (about +1.62e-6 for Earth)
      c50 - un-normalized zonal coefficient (about +2.28e-7 for Earth)
      c60 - un-normalized zonal coefficient (about -5.41e-7 for Earth)
      See Also:
    • FieldEcksteinHechlerPropagator

      public FieldEcksteinHechlerPropagator(FieldOrbit<T> initialOrbit, T mass, UnnormalizedSphericalHarmonicsProvider provider)
      Build a propagator from FieldOrbit, mass and potential provider.

      Attitude law is set to an unspecified non-null arbitrary value.

      Using this constructor, an initial osculating orbit is considered.

      Conversion from osculating to mean orbit is done through a fixed-point iteration process.

      Parameters:
      initialOrbit - initial FieldOrbit
      mass - spacecraft mass
      provider - for un-normalized zonal coefficients
      See Also:
    • FieldEcksteinHechlerPropagator

      public FieldEcksteinHechlerPropagator(FieldOrbit<T> initialOrbit, T mass, double referenceRadius, T mu, double c20, double c30, double c40, double c50, double c60)
      Build a propagator from FieldOrbit, mass and potential.

      Attitude law is set to an unspecified non-null arbitrary value.

      The Cn,0 coefficients are the denormalized zonal coefficients, they are related to both the normalized coefficients Cn,0 and the Jn one as follows:

      Cn,0 = [(2-δ0,m)(2n+1)(n-m)!/(n+m)!]½ Cn,0

      Cn,0 = -Jn

      Using this constructor, an initial osculating orbit is considered.

      Conversion from osculating to mean orbit is done through a fixed-point iteration process.

      Parameters:
      initialOrbit - initial FieldOrbit
      mass - spacecraft mass
      referenceRadius - reference radius of the Earth for the potential model (m)
      mu - central attraction coefficient (m³/s²)
      c20 - un-normalized zonal coefficient (about -1.08e-3 for Earth)
      c30 - un-normalized zonal coefficient (about +2.53e-6 for Earth)
      c40 - un-normalized zonal coefficient (about +1.62e-6 for Earth)
      c50 - un-normalized zonal coefficient (about +2.28e-7 for Earth)
      c60 - un-normalized zonal coefficient (about -5.41e-7 for Earth)
      See Also:
    • FieldEcksteinHechlerPropagator

      public FieldEcksteinHechlerPropagator(FieldOrbit<T> initialOrbit, AttitudeProvider attitudeProv, UnnormalizedSphericalHarmonicsProvider provider)
      Build a propagator from FieldOrbit, attitude provider and potential provider.

      Mass is set to an unspecified non-null arbitrary value.

      Using this constructor, an initial osculating orbit is considered.

      Conversion from osculating to mean orbit is done through a fixed-point iteration process.

      Parameters:
      initialOrbit - initial FieldOrbit
      attitudeProv - attitude provider
      provider - for un-normalized zonal coefficients
    • FieldEcksteinHechlerPropagator

      public FieldEcksteinHechlerPropagator(FieldOrbit<T> initialOrbit, AttitudeProvider attitudeProv, double referenceRadius, T mu, double c20, double c30, double c40, double c50, double c60)
      Build a propagator from FieldOrbit, attitude provider and potential.

      Mass is set to an unspecified non-null arbitrary value.

      The Cn,0 coefficients are the denormalized zonal coefficients, they are related to both the normalized coefficients Cn,0 and the Jn one as follows:

      Cn,0 = [(2-δ0,m)(2n+1)(n-m)!/(n+m)!]½ Cn,0

      Cn,0 = -Jn

      Using this constructor, an initial osculating orbit is considered.

      Conversion from osculating to mean orbit is done through a fixed-point iteration process.

      Parameters:
      initialOrbit - initial FieldOrbit
      attitudeProv - attitude provider
      referenceRadius - reference radius of the Earth for the potential model (m)
      mu - central attraction coefficient (m³/s²)
      c20 - un-normalized zonal coefficient (about -1.08e-3 for Earth)
      c30 - un-normalized zonal coefficient (about +2.53e-6 for Earth)
      c40 - un-normalized zonal coefficient (about +1.62e-6 for Earth)
      c50 - un-normalized zonal coefficient (about +2.28e-7 for Earth)
      c60 - un-normalized zonal coefficient (about -5.41e-7 for Earth)
    • FieldEcksteinHechlerPropagator

      public FieldEcksteinHechlerPropagator(FieldOrbit<T> initialOrbit, AttitudeProvider attitudeProv, T mass, UnnormalizedSphericalHarmonicsProvider provider)
      Build a propagator from FieldOrbit, attitude provider, mass and potential provider.

      Using this constructor, an initial osculating orbit is considered.

      Conversion from osculating to mean orbit is done through a fixed-point iteration process.

      Parameters:
      initialOrbit - initial FieldOrbit
      attitudeProv - attitude provider
      mass - spacecraft mass
      provider - for un-normalized zonal coefficients
      See Also:
    • FieldEcksteinHechlerPropagator

      public FieldEcksteinHechlerPropagator(FieldOrbit<T> initialOrbit, AttitudeProvider attitudeProv, T mass, double referenceRadius, T mu, double c20, double c30, double c40, double c50, double c60)
      Build a propagator from FieldOrbit, attitude provider, mass and potential.

      The Cn,0 coefficients are the denormalized zonal coefficients, they are related to both the normalized coefficients Cn,0 and the Jn one as follows:

      Cn,0 = [(2-δ0,m)(2n+1)(n-m)!/(n+m)!]½ Cn,0

      Cn,0 = -Jn

      Using this constructor, an initial osculating orbit is considered.

      Conversion from osculating to mean orbit is done through a fixed-point iteration process.

      Parameters:
      initialOrbit - initial FieldOrbit
      attitudeProv - attitude provider
      mass - spacecraft mass
      referenceRadius - reference radius of the Earth for the potential model (m)
      mu - central attraction coefficient (m³/s²)
      c20 - un-normalized zonal coefficient (about -1.08e-3 for Earth)
      c30 - un-normalized zonal coefficient (about +2.53e-6 for Earth)
      c40 - un-normalized zonal coefficient (about +1.62e-6 for Earth)
      c50 - un-normalized zonal coefficient (about +2.28e-7 for Earth)
      c60 - un-normalized zonal coefficient (about -5.41e-7 for Earth)
      See Also:
    • FieldEcksteinHechlerPropagator

      public FieldEcksteinHechlerPropagator(FieldOrbit<T> initialOrbit, UnnormalizedSphericalHarmonicsProvider provider, PropagationType initialType)
      Build a propagator from orbit and potential provider.

      Mass and attitude provider are set to unspecified non-null arbitrary values.

      Using this constructor, it is possible to define the initial orbit as a mean Eckstein-Hechler orbit or an osculating one.

      Conversion from osculating to mean orbit will be done through a fixed-point iteration process.

      Parameters:
      initialOrbit - initial orbit
      provider - for un-normalized zonal coefficients
      initialType - initial orbit type (mean Eckstein-Hechler orbit or osculating orbit)
      Since:
      10.2
    • FieldEcksteinHechlerPropagator

      public FieldEcksteinHechlerPropagator(FieldOrbit<T> initialOrbit, AttitudeProvider attitudeProv, T mass, UnnormalizedSphericalHarmonicsProvider provider, PropagationType initialType)
      Build a propagator from orbit, attitude provider, mass and potential provider.

      Using this constructor, it is possible to define the initial orbit as a mean Eckstein-Hechler orbit or an osculating one.

      Conversion from osculating to mean orbit will be done through a fixed-point iteration process.

      Parameters:
      initialOrbit - initial orbit
      attitudeProv - attitude provider
      mass - spacecraft mass
      provider - for un-normalized zonal coefficients
      initialType - initial orbit type (mean Eckstein-Hechler orbit or osculating orbit)
      Since:
      10.2
    • FieldEcksteinHechlerPropagator

      public FieldEcksteinHechlerPropagator(FieldOrbit<T> initialOrbit, AttitudeProvider attitude, T mass, UnnormalizedSphericalHarmonicsProvider provider, UnnormalizedSphericalHarmonicsProvider.UnnormalizedSphericalHarmonics harmonics, PropagationType initialType)
      Private helper constructor.

      Using this constructor, it is possible to define the initial orbit as a mean Eckstein-Hechler orbit or an osculating one.

      Conversion from osculating to mean orbit will be done through a fixed-point iteration process.

      Parameters:
      initialOrbit - initial orbit
      attitude - attitude provider
      mass - spacecraft mass
      provider - for un-normalized zonal coefficients
      harmonics - provider.onDate(initialOrbit.getDate())
      initialType - initial orbit type (mean Eckstein-Hechler orbit or osculating orbit)
      Since:
      10.2
    • FieldEcksteinHechlerPropagator

      public FieldEcksteinHechlerPropagator(FieldOrbit<T> initialOrbit, AttitudeProvider attitudeProv, T mass, double referenceRadius, T mu, double c20, double c30, double c40, double c50, double c60, PropagationType initialType)
      Build a propagator from FieldOrbit, attitude provider, mass and potential.

      The Cn,0 coefficients are the denormalized zonal coefficients, they are related to both the normalized coefficients Cn,0 and the Jn one as follows:

      Cn,0 = [(2-δ0,m)(2n+1)(n-m)!/(n+m)!]½ Cn,0

      Cn,0 = -Jn

      Using this constructor, it is possible to define the initial orbit as a mean Eckstein-Hechler orbit or an osculating one.

      Conversion from osculating to mean orbit will be done through a fixed-point iteration process.

      Parameters:
      initialOrbit - initial FieldOrbit
      attitudeProv - attitude provider
      mass - spacecraft mass
      referenceRadius - reference radius of the Earth for the potential model (m)
      mu - central attraction coefficient (m³/s²)
      c20 - un-normalized zonal coefficient (about -1.08e-3 for Earth)
      c30 - un-normalized zonal coefficient (about +2.53e-6 for Earth)
      c40 - un-normalized zonal coefficient (about +1.62e-6 for Earth)
      c50 - un-normalized zonal coefficient (about +2.28e-7 for Earth)
      c60 - un-normalized zonal coefficient (about -5.41e-7 for Earth)
      initialType - initial orbit type (mean Eckstein-Hechler orbit or osculating orbit)
      Since:
      10.2
    • FieldEcksteinHechlerPropagator

      public FieldEcksteinHechlerPropagator(FieldOrbit<T> initialOrbit, AttitudeProvider attitudeProv, T mass, double referenceRadius, T mu, double c20, double c30, double c40, double c50, double c60, PropagationType initialType, double epsilon, int maxIterations)
      Build a propagator from FieldOrbit, attitude provider, mass and potential.

      The Cn,0 coefficients are the denormalized zonal coefficients, they are related to both the normalized coefficients Cn,0 and the Jn one as follows:

      Cn,0 = [(2-δ0,m)(2n+1)(n-m)!/(n+m)!]½ Cn,0

      Cn,0 = -Jn

      Using this constructor, it is possible to define the initial orbit as a mean Eckstein-Hechler orbit or an osculating one.

      Conversion from osculating to mean orbit will be done through a fixed-point iteration process.

      Parameters:
      initialOrbit - initial FieldOrbit
      attitudeProv - attitude provider
      mass - spacecraft mass
      referenceRadius - reference radius of the Earth for the potential model (m)
      mu - central attraction coefficient (m³/s²)
      c20 - un-normalized zonal coefficient (about -1.08e-3 for Earth)
      c30 - un-normalized zonal coefficient (about +2.53e-6 for Earth)
      c40 - un-normalized zonal coefficient (about +1.62e-6 for Earth)
      c50 - un-normalized zonal coefficient (about +2.28e-7 for Earth)
      c60 - un-normalized zonal coefficient (about -5.41e-7 for Earth)
      initialType - initial orbit type (mean Eckstein-Hechler orbit or osculating orbit)
      epsilon - convergence threshold for mean parameters conversion
      maxIterations - maximum iterations for mean parameters conversion
      Since:
      11.2
    • FieldEcksteinHechlerPropagator

      public FieldEcksteinHechlerPropagator(FieldOrbit<T> initialOrbit, AttitudeProvider attitudeProv, T mass, double referenceRadius, T mu, double c20, double c30, double c40, double c50, double c60, PropagationType initialType, OsculatingToMeanConverter converter)
      Build a propagator from FieldOrbit, attitude provider, mass and potential.

      The Cn,0 coefficients are the denormalized zonal coefficients, they are related to both the normalized coefficients Cn,0 and the Jn one as follows:

      Cn,0 = [(2-δ0,m)(2n+1)(n-m)!/(n+m)!]½ Cn,0

      Cn,0 = -Jn

      Using this constructor, it is possible to define the initial orbit as a mean Eckstein-Hechler orbit or an osculating one.

      Conversion from osculating to mean orbit will be done through the given converter.

      Parameters:
      initialOrbit - initial FieldOrbit
      attitudeProv - attitude provider
      mass - spacecraft mass
      referenceRadius - reference radius of the Earth for the potential model (m)
      mu - central attraction coefficient (m³/s²)
      c20 - un-normalized zonal coefficient (about -1.08e-3 for Earth)
      c30 - un-normalized zonal coefficient (about +2.53e-6 for Earth)
      c40 - un-normalized zonal coefficient (about +1.62e-6 for Earth)
      c50 - un-normalized zonal coefficient (about +2.28e-7 for Earth)
      c60 - un-normalized zonal coefficient (about -5.41e-7 for Earth)
      initialType - initial orbit type (mean Eckstein-Hechler orbit or osculating orbit)
      converter - osculating to mean orbit converter
      Since:
      13.0
  • Method Details

    • computeMeanOrbit

      Conversion from osculating to mean orbit.

      Compute mean orbit in a Eckstein-Hechler sense, corresponding to the osculating SpacecraftState in input.

      Since the osculating orbit is obtained with the computation of short-periodic variation, the resulting output will depend on the gravity field parameterized in input.

      The computation is done through a fixed-point iteration process.

      Type Parameters:
      T - type of the filed elements
      Parameters:
      osculating - osculating orbit to convert
      provider - for un-normalized zonal coefficients
      harmonics - provider.onDate(osculating.getDate())
      Returns:
      mean orbit in a Eckstein-Hechler sense
      Since:
      11.2
    • computeMeanOrbit

      public static <T extends CalculusFieldElement<T>> FieldCircularOrbit<T> computeMeanOrbit(FieldOrbit<T> osculating, UnnormalizedSphericalHarmonicsProvider provider, UnnormalizedSphericalHarmonicsProvider.UnnormalizedSphericalHarmonics harmonics, double epsilon, int maxIterations)
      Conversion from osculating to mean orbit.

      Compute mean orbit in a Eckstein-Hechler sense, corresponding to the osculating SpacecraftState in input.

      Since the osculating orbit is obtained with the computation of short-periodic variation, the resulting output will depend on the gravity field parameterized in input.

      The computation is done through a fixed-point iteration process.

      Type Parameters:
      T - type of the filed elements
      Parameters:
      osculating - osculating orbit to convert
      provider - for un-normalized zonal coefficients
      harmonics - provider.onDate(osculating.getDate())
      epsilon - convergence threshold for mean parameters conversion
      maxIterations - maximum iterations for mean parameters conversion
      Returns:
      mean orbit in a Eckstein-Hechler sense
      Since:
      11.2
    • computeMeanOrbit

      public static <T extends CalculusFieldElement<T>> FieldCircularOrbit<T> computeMeanOrbit(FieldOrbit<T> osculating, double referenceRadius, double mu, double c20, double c30, double c40, double c50, double c60, double epsilon, int maxIterations)
      Conversion from osculating to mean orbit.

      Compute mean orbit in a Eckstein-Hechler sense, corresponding to the osculating SpacecraftState in input.

      Since the osculating orbit is obtained with the computation of short-periodic variation, the resulting output will depend on the gravity field parameterized in input.

      The computation is done through a fixed-point iteration process.

      Type Parameters:
      T - type of the filed elements
      Parameters:
      osculating - osculating orbit to convert
      referenceRadius - reference radius of the Earth for the potential model (m)
      mu - central attraction coefficient (m³/s²)
      c20 - un-normalized zonal coefficient (about -1.08e-3 for Earth)
      c30 - un-normalized zonal coefficient (about +2.53e-6 for Earth)
      c40 - un-normalized zonal coefficient (about +1.62e-6 for Earth)
      c50 - un-normalized zonal coefficient (about +2.28e-7 for Earth)
      c60 - un-normalized zonal coefficient (about -5.41e-7 for Earth)
      epsilon - convergence threshold for mean parameters conversion
      maxIterations - maximum iterations for mean parameters conversion
      Returns:
      mean orbit in a Eckstein-Hechler sense
      Since:
      11.2
    • computeMeanOrbit

      public static <T extends CalculusFieldElement<T>> FieldCircularOrbit<T> computeMeanOrbit(FieldOrbit<T> osculating, double referenceRadius, double mu, double c20, double c30, double c40, double c50, double c60, OsculatingToMeanConverter converter)
      Conversion from osculating to mean orbit.

      Compute mean orbit in a Eckstein-Hechler sense, corresponding to the osculating SpacecraftState in input.

      Since the osculating orbit is obtained with the computation of short-periodic variation, the resulting output will depend on the gravity field parameterized in input.

      The computation is done through the given osculating to mean orbit converter.

      Type Parameters:
      T - type of the filed elements
      Parameters:
      osculating - osculating orbit to convert
      referenceRadius - reference radius of the Earth for the potential model (m)
      mu - central attraction coefficient (m³/s²)
      c20 - un-normalized zonal coefficient (about -1.08e-3 for Earth)
      c30 - un-normalized zonal coefficient (about +2.53e-6 for Earth)
      c40 - un-normalized zonal coefficient (about +1.62e-6 for Earth)
      c50 - un-normalized zonal coefficient (about +2.28e-7 for Earth)
      c60 - un-normalized zonal coefficient (about -5.41e-7 for Earth)
      converter - osculating to mean orbit converter
      Returns:
      mean orbit in a Eckstein-Hechler sense
      Since:
      13.0
    • resetInitialState

      public void resetInitialState(FieldSpacecraftState<T> state)
      Reset the propagator initial state.

      The new initial state to consider must be defined with an osculating orbit.

      Specified by:
      resetInitialState in interface FieldPropagator<T extends CalculusFieldElement<T>>
      Overrides:
      resetInitialState in class FieldAbstractPropagator<T extends CalculusFieldElement<T>>
      Parameters:
      state - new initial state to consider
      See Also:
    • resetInitialState

      public void resetInitialState(FieldSpacecraftState<T> state, PropagationType stateType)
      Reset the propagator initial state.
      Parameters:
      state - new initial state to consider
      stateType - mean Eckstein-Hechler orbit or osculating orbit
      Since:
      10.2
    • resetInitialState

      public void resetInitialState(FieldSpacecraftState<T> state, PropagationType stateType, double epsilon, int maxIterations)
      Reset the propagator initial state.
      Parameters:
      state - new initial state to consider
      stateType - mean Eckstein-Hechler orbit or osculating orbit
      epsilon - convergence threshold for mean parameters conversion
      maxIterations - maximum iterations for mean parameters conversion
      Since:
      11.2
    • resetInitialState

      public void resetInitialState(FieldSpacecraftState<T> state, PropagationType stateType, OsculatingToMeanConverter converter)
      Reset the propagator initial state.
      Parameters:
      state - new initial state to consider
      stateType - mean Eckstein-Hechler orbit or osculating orbit
      converter - osculating to mean orbit converter
      Since:
      13.0
    • resetIntermediateState

      protected void resetIntermediateState(FieldSpacecraftState<T> state, boolean forward)
      Reset an intermediate state.
      Specified by:
      resetIntermediateState in class FieldAbstractAnalyticalPropagator<T extends CalculusFieldElement<T>>
      Parameters:
      state - new intermediate state to consider
      forward - if true, the intermediate state is valid for propagations after itself
    • resetIntermediateState

      protected void resetIntermediateState(FieldSpacecraftState<T> state, boolean forward, double epsilon, int maxIterations)
      Reset an intermediate state.
      Parameters:
      state - new intermediate state to consider
      forward - if true, the intermediate state is valid for propagations after itself
      epsilon - convergence threshold for mean parameters conversion
      maxIterations - maximum iterations for mean parameters conversion
      Since:
      11.2
    • resetIntermediateState

      protected void resetIntermediateState(FieldSpacecraftState<T> state, boolean forward, OsculatingToMeanConverter converter)
      Reset an intermediate state.
      Parameters:
      state - new intermediate state to consider
      forward - if true, the intermediate state is valid for propagations after itself
      converter - osculating to mean orbit converter
      Since:
      13.0
    • propagateOrbit

      public FieldCartesianOrbit<T> propagateOrbit(FieldAbsoluteDate<T> date, T[] parameters)
      Propagate an orbit up to a specific target date.
      Specified by:
      propagateOrbit in class FieldAbstractAnalyticalPropagator<T extends CalculusFieldElement<T>>
      Parameters:
      date - target date for the orbit
      parameters - model parameters
      Returns:
      propagated orbit
    • getOsculatingCircularOrbit

      public FieldCircularOrbit<T> getOsculatingCircularOrbit(FieldAbsoluteDate<T> date)
      Get the osculating circular orbit from the EH model.

      This method is only relevant for the conversion from osculating to mean orbit.

      Parameters:
      date - target date for the orbit
      Returns:
      the osculating circular orbite
    • getMass

      protected T getMass(FieldAbsoluteDate<T> date)
      Get the mass.
      Specified by:
      getMass in class FieldAbstractAnalyticalPropagator<T extends CalculusFieldElement<T>>
      Parameters:
      date - target date for the orbit
      Returns:
      mass mass
    • getParametersDrivers

      public List<ParameterDriver> getParametersDrivers()
      Get the drivers for parameters.
      Returns:
      drivers for parameters