Class FieldEcksteinHechlerPropagator<T extends org.hipparchus.RealFieldElement<T>>

  • All Implemented Interfaces:
    FieldPropagator<T>, FieldPVCoordinatesProvider<T>

    public class FieldEcksteinHechlerPropagator<T extends org.hipparchus.RealFieldElement<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:
    FieldOrbit
    • Constructor Detail

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

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

        public FieldEcksteinHechlerPropagator​(FieldOrbit<T> initialOrbit,
                                              double referenceRadius,
                                              double 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
         
        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:
        Constants
      • 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.

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

        public FieldEcksteinHechlerPropagator​(FieldOrbit<T> initialOrbit,
                                              T mass,
                                              double referenceRadius,
                                              double 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
         
        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)
      • 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.

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

        public FieldEcksteinHechlerPropagator​(FieldOrbit<T> initialOrbit,
                                              AttitudeProvider attitudeProv,
                                              double referenceRadius,
                                              double 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
         
        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.
        Parameters:
        initialOrbit - initial FieldOrbit
        attitudeProv - attitude provider
        mass - spacecraft mass
        provider - for un-normalized zonal coefficients
      • FieldEcksteinHechlerPropagator

        public FieldEcksteinHechlerPropagator​(FieldOrbit<T> initialOrbit,
                                              AttitudeProvider attitudeProv,
                                              T mass,
                                              double referenceRadius,
                                              double 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
         
        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)
    • Method Detail

      • resetIntermediateState

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

        public static <T extends org.hipparchus.RealFieldElement<T>> T normalizeAngle​(T a,
                                                                                      T center)
        Normalize an angle in a 2π wide interval around a center value.

        This method has three main uses:

        • normalize an angle between 0 and 2π:
          a = MathUtils.normalizeAngle(a, FastMath.PI);
        • normalize an angle between -π and +π
          a = MathUtils.normalizeAngle(a, 0.0);
        • compute the angle between two defining angular positions:
          angle = MathUtils.normalizeAngle(end, start) - start;

        Note that due to numerical accuracy and since π cannot be represented exactly, the result interval is closed, it cannot be half-closed as would be more satisfactory in a purely mathematical view.

        Type Parameters:
        T - the type of the field elements
        Parameters:
        a - angle to normalize
        center - center of the desired 2π interval for the result
        Returns:
        a-2kπ with integer k and center-π <= a-2kπ <= center+π
        Since:
        1.2