Class BrouwerLyddanePropagatorBuilder

  • All Implemented Interfaces:
    PropagatorBuilder

    public class BrouwerLyddanePropagatorBuilder
    extends AbstractPropagatorBuilder
    Builder for Brouwer-Lyddane propagator.

    By default, Brouwer-Lyddane model considers only the perturbations due to zonal harmonics. However, for low Earth orbits, the magnitude of the perturbative acceleration due to atmospheric drag can be significant. Warren Phipps' 1992 thesis considered the atmospheric drag by time derivatives of the mean mean anomaly using the catch-all coefficient M2. Usually, M2 is adjusted during an orbit determination process and it represents the combination of all unmodeled secular along-track effects (i.e. not just the atmospheric drag). The behavior of M2 is closed to the TLE.getBStar() parameter for the TLE. If the value of M2 is equal to 0.0, the along-track secular effects are not considered in the dynamical model. Typical values for M2 are not known. It depends on the orbit type. However, the value of M2 must be very small (e.g. between 1.0e-14 and 1.0e-15). The unit of M2 is rad/s².

    To estimate the M2 parameter, it is necessary to call the AbstractPropagatorBuilder.getPropagationParametersDrivers() method as follow:

      for (ParameterDriver driver : builder.getPropagationParametersDrivers().getDrivers()) {
         if (BrouwerLyddanePropagator.M2_NAME.equals(driver.getName())) {
            driver.setSelected(true);
         }
      }
     
    Since:
    11.1
    Author:
    Melina Vanel, Bryan Cazabonne
    • Constructor Detail

      • BrouwerLyddanePropagatorBuilder

        public BrouwerLyddanePropagatorBuilder​(Orbit templateOrbit,
                                               UnnormalizedSphericalHarmonicsProvider provider,
                                               PositionAngleType positionAngleType,
                                               double positionScale,
                                               double M2)
        Build a new instance.

        The template orbit is used as a model to create initial orbit. It defines the inertial frame, the central attraction coefficient, the orbit type, and is also used together with the positionScale to convert from the normalized parameters used by the callers of this builder to the real orbital parameters. The default attitude provider is aligned with the orbit's inertial frame.

        Parameters:
        templateOrbit - reference orbit from which real orbits will be built (note that the mu from this orbit will be overridden with the mu from the provider)
        provider - for un-normalized zonal coefficients
        positionAngleType - position angle type to use
        positionScale - scaling factor used for orbital parameters normalization (typically set to the expected standard deviation of the position)
        M2 - value of empirical drag coefficient in rad/s². If equal to BrouwerLyddanePropagator.M2 drag is not computed
        See Also:
        BrouwerLyddanePropagatorBuilder(Orbit, UnnormalizedSphericalHarmonicsProvider, PositionAngleType, double, AttitudeProvider, double)
      • BrouwerLyddanePropagatorBuilder

        public BrouwerLyddanePropagatorBuilder​(Orbit templateOrbit,
                                               double referenceRadius,
                                               double mu,
                                               TideSystem tideSystem,
                                               double c20,
                                               double c30,
                                               double c40,
                                               double c50,
                                               OrbitType orbitType,
                                               PositionAngleType positionAngleType,
                                               double positionScale,
                                               double M2)
        Build a new instance.

        The template orbit is used as a model to create initial orbit. It defines the inertial frame, the central attraction coefficient, the orbit type, and is also used together with the positionScale to convert from the normalized parameters used by the callers of this builder to the real orbital parameters.

        Parameters:
        templateOrbit - reference orbit from which real orbits will be built (note that the mu from this orbit will be overridden with the mu from the provider)
        referenceRadius - reference radius of the Earth for the potential model (m)
        mu - central attraction coefficient (m³/s²)
        tideSystem - tide system
        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)
        orbitType - orbit type to use
        positionAngleType - position angle type to use
        positionScale - scaling factor used for orbital parameters normalization (typically set to the expected standard deviation of the position)
        M2 - value of empirical drag coefficient in rad/s². If equal to BrouwerLyddanePropagator.M2 drag is not computed
        See Also:
        BrouwerLyddanePropagatorBuilder(Orbit, UnnormalizedSphericalHarmonicsProvider, PositionAngleType, double, AttitudeProvider, double)
      • BrouwerLyddanePropagatorBuilder

        public BrouwerLyddanePropagatorBuilder​(Orbit templateOrbit,
                                               UnnormalizedSphericalHarmonicsProvider provider,
                                               PositionAngleType positionAngleType,
                                               double positionScale,
                                               AttitudeProvider attitudeProvider,
                                               double M2)
        Build a new instance.

        The template orbit is used as a model to create initial orbit. It defines the inertial frame, the central attraction coefficient, the orbit type, and is also used together with the positionScale to convert from the normalized parameters used by the callers of this builder to the real orbital parameters.

        Parameters:
        templateOrbit - reference orbit from which real orbits will be built (note that the mu from this orbit will be overridden with the mu from the provider)
        provider - for un-normalized zonal coefficients
        positionAngleType - position angle type to use
        positionScale - scaling factor used for orbital parameters normalization (typically set to the expected standard deviation of the position)
        attitudeProvider - attitude law to use
        M2 - value of empirical drag coefficient in rad/s². If equal to BrouwerLyddanePropagator.M2 drag is not computed
    • Method Detail

      • buildPropagator

        public BrouwerLyddanePropagator buildPropagator​(double[] normalizedParameters)
        Build a propagator.
        Parameters:
        normalizedParameters - normalized values for the selected parameters
        Returns:
        an initialized propagator
      • buildLeastSquaresModel

        public AbstractBatchLSModel buildLeastSquaresModel​(PropagatorBuilder[] builders,
                                                           List<ObservedMeasurement<?>> measurements,
                                                           ParameterDriversList estimatedMeasurementsParameters,
                                                           ModelObserver observer)
        Build a new batch least squares model.
        Parameters:
        builders - builders to use for propagation
        measurements - measurements
        estimatedMeasurementsParameters - estimated measurements parameters
        observer - observer to be notified at model calls
        Returns:
        a new model for the Batch Least Squares orbit determination