Class BrouwerLyddanePropagatorBuilder
- java.lang.Object
-
- org.orekit.propagation.conversion.AbstractPropagatorBuilder
-
- org.orekit.propagation.conversion.BrouwerLyddanePropagatorBuilder
-
- All Implemented Interfaces:
OrbitDeterminationPropagatorBuilder
,PropagatorBuilder
public class BrouwerLyddanePropagatorBuilder extends AbstractPropagatorBuilder implements OrbitDeterminationPropagatorBuilder
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 to0.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 Summary
Constructors Constructor Description BrouwerLyddanePropagatorBuilder(Orbit templateOrbit, double referenceRadius, double mu, TideSystem tideSystem, double c20, double c30, double c40, double c50, OrbitType orbitType, PositionAngle positionAngle, double positionScale, double M2)
Build a new instance.BrouwerLyddanePropagatorBuilder(Orbit templateOrbit, UnnormalizedSphericalHarmonicsProvider provider, PositionAngle positionAngle, double positionScale, double M2)
Build a new instance.BrouwerLyddanePropagatorBuilder(Orbit templateOrbit, UnnormalizedSphericalHarmonicsProvider provider, PositionAngle positionAngle, double positionScale, AttitudeProvider attitudeProvider, double M2)
Build a new instance.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description AbstractKalmanModel
buildKalmanModel(List<OrbitDeterminationPropagatorBuilder> propagatorBuilders, List<CovarianceMatrixProvider> covarianceMatricesProviders, ParameterDriversList estimatedMeasurementsParameters, CovarianceMatrixProvider measurementProcessNoiseMatrix)
Build a new Kalman model.AbstractBatchLSModel
buildLSModel(OrbitDeterminationPropagatorBuilder[] builders, List<ObservedMeasurement<?>> measurements, ParameterDriversList estimatedMeasurementsParameters, ModelObserver observer)
Build a new batch least squares model.BrouwerLyddanePropagator
buildPropagator(double[] normalizedParameters)
Build a propagator.-
Methods inherited from class org.orekit.propagation.conversion.AbstractPropagatorBuilder
addAdditionalDerivativesProvider, addAdditionalEquations, addSupportedParameter, createInitialOrbit, deselectDynamicParameters, getAdditionalDerivativesProviders, getAdditionalEquations, getAttitudeProvider, getFrame, getInitialOrbitDate, getMu, getOrbitalParametersDrivers, getOrbitType, getPositionAngle, getPositionScale, getPropagationParametersDrivers, getSelectedNormalizedParameters, resetOrbit, setAttitudeProvider, setParameters
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface org.orekit.propagation.conversion.OrbitDeterminationPropagatorBuilder
resetOrbit
-
Methods inherited from interface org.orekit.propagation.conversion.PropagatorBuilder
getFrame, getInitialOrbitDate, getOrbitalParametersDrivers, getOrbitType, getPositionAngle, getPropagationParametersDrivers, getSelectedNormalizedParameters
-
-
-
-
Constructor Detail
-
BrouwerLyddanePropagatorBuilder
public BrouwerLyddanePropagatorBuilder(Orbit templateOrbit, UnnormalizedSphericalHarmonicsProvider provider, PositionAngle positionAngle, 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 thepositionScale
to convert from thenormalized
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 theprovider
)provider
- for un-normalized zonal coefficientspositionAngle
- position angle type to usepositionScale
- 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 toBrouwerLyddanePropagator.M2
drag is not computed- See Also:
BrouwerLyddanePropagatorBuilder(Orbit, UnnormalizedSphericalHarmonicsProvider, PositionAngle, double, AttitudeProvider, double)
-
BrouwerLyddanePropagatorBuilder
public BrouwerLyddanePropagatorBuilder(Orbit templateOrbit, double referenceRadius, double mu, TideSystem tideSystem, double c20, double c30, double c40, double c50, OrbitType orbitType, PositionAngle positionAngle, 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 thepositionScale
to convert from thenormalized
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 theprovider
)referenceRadius
- reference radius of the Earth for the potential model (m)mu
- central attraction coefficient (m³/s²)tideSystem
- tide systemc20
- 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 usepositionAngle
- position angle type to usepositionScale
- 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 toBrouwerLyddanePropagator.M2
drag is not computed- See Also:
BrouwerLyddanePropagatorBuilder(Orbit, UnnormalizedSphericalHarmonicsProvider, PositionAngle, double, AttitudeProvider, double)
-
BrouwerLyddanePropagatorBuilder
public BrouwerLyddanePropagatorBuilder(Orbit templateOrbit, UnnormalizedSphericalHarmonicsProvider provider, PositionAngle positionAngle, 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 thepositionScale
to convert from thenormalized
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 theprovider
)provider
- for un-normalized zonal coefficientspositionAngle
- position angle type to usepositionScale
- 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 toBrouwerLyddanePropagator.M2
drag is not computedattitudeProvider
- attitude law to use
-
-
Method Detail
-
buildPropagator
public BrouwerLyddanePropagator buildPropagator(double[] normalizedParameters)
Build a propagator.- Specified by:
buildPropagator
in interfacePropagatorBuilder
- Parameters:
normalizedParameters
- normalized values for the selected parameters- Returns:
- an initialized propagator
-
buildLSModel
public AbstractBatchLSModel buildLSModel(OrbitDeterminationPropagatorBuilder[] builders, List<ObservedMeasurement<?>> measurements, ParameterDriversList estimatedMeasurementsParameters, ModelObserver observer)
Build a new batch least squares model.- Specified by:
buildLSModel
in interfaceOrbitDeterminationPropagatorBuilder
- Parameters:
builders
- builders to use for propagationmeasurements
- measurementsestimatedMeasurementsParameters
- estimated measurements parametersobserver
- observer to be notified at model calls- Returns:
- a new model for the Batch Least Squares orbit determination
-
buildKalmanModel
public AbstractKalmanModel buildKalmanModel(List<OrbitDeterminationPropagatorBuilder> propagatorBuilders, List<CovarianceMatrixProvider> covarianceMatricesProviders, ParameterDriversList estimatedMeasurementsParameters, CovarianceMatrixProvider measurementProcessNoiseMatrix)
Build a new Kalman model.- Specified by:
buildKalmanModel
in interfaceOrbitDeterminationPropagatorBuilder
- Parameters:
propagatorBuilders
- propagators builders used to evaluate the orbits.covarianceMatricesProviders
- providers for covariance matricesestimatedMeasurementsParameters
- measurement parameters to estimatemeasurementProcessNoiseMatrix
- provider for measurement process noise matrix- Returns:
- a new model for Kalman Filter orbit determination
-
-