public class FieldBrouwerLyddanePropagator<T extends CalculusFieldElement<T>> extends FieldAbstractAnalyticalPropagator<T>
FieldSpacecraftState
using the analytical Brouwer-Lyddane model (from J2 to J5 zonal harmonics).
At the opposite of the FieldEcksteinHechlerPropagator
, the Brouwer-Lyddane model is
suited for elliptical orbits, there is no problem having a rather small eccentricity or inclination
(Lyddane helped to solve this issue with the Brouwer model). Singularity for the critical
inclination i = 63.4° is avoided using the method developed in Warren Phipps' 1992 thesis.
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
M2Driver
.
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 close to the FieldTLE.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².
The along-track effects, represented by the secular rates of the mean semi-major axis
and eccentricity, are computed following Eq. 2.38, 2.41, and 2.45 of Warren Phipps' thesis.
DEFAULT_MASS
Constructor and Description |
---|
FieldBrouwerLyddanePropagator(FieldOrbit<T> initialOrbit,
AttitudeProvider attitudeProv,
double referenceRadius,
T mu,
double c20,
double c30,
double c40,
double c50,
double M2)
Build a propagator from orbit, attitude provider and potential.
|
FieldBrouwerLyddanePropagator(FieldOrbit<T> initialOrbit,
AttitudeProvider attitudeProv,
T mass,
double referenceRadius,
T mu,
double c20,
double c30,
double c40,
double c50,
double M2)
Build a propagator from orbit, attitude provider, mass and potential.
|
FieldBrouwerLyddanePropagator(FieldOrbit<T> initialOrbit,
AttitudeProvider attitudeProv,
T mass,
double referenceRadius,
T mu,
double c20,
double c30,
double c40,
double c50,
PropagationType initialType,
double M2)
Build a propagator from orbit, attitude provider, mass and potential.
|
FieldBrouwerLyddanePropagator(FieldOrbit<T> initialOrbit,
AttitudeProvider attitudeProv,
T mass,
UnnormalizedSphericalHarmonicsProvider provider,
double M2)
Build a propagator from orbit, attitude provider, mass and potential provider.
|
FieldBrouwerLyddanePropagator(FieldOrbit<T> initialOrbit,
AttitudeProvider attitudeProv,
T mass,
UnnormalizedSphericalHarmonicsProvider provider,
PropagationType initialType,
double M2)
Build a propagator from orbit, attitude provider, mass and potential provider.
|
FieldBrouwerLyddanePropagator(FieldOrbit<T> initialOrbit,
AttitudeProvider attitude,
T mass,
UnnormalizedSphericalHarmonicsProvider provider,
UnnormalizedSphericalHarmonicsProvider.UnnormalizedSphericalHarmonics harmonics,
double M2)
Private helper constructor.
|
FieldBrouwerLyddanePropagator(FieldOrbit<T> initialOrbit,
AttitudeProvider attitude,
T mass,
UnnormalizedSphericalHarmonicsProvider provider,
UnnormalizedSphericalHarmonicsProvider.UnnormalizedSphericalHarmonics harmonics,
PropagationType initialType,
double M2)
Private helper constructor.
|
FieldBrouwerLyddanePropagator(FieldOrbit<T> initialOrbit,
AttitudeProvider attitudeProv,
UnnormalizedSphericalHarmonicsProvider provider,
double M2)
Build a propagator from orbit, attitude provider and potential provider.
|
FieldBrouwerLyddanePropagator(FieldOrbit<T> initialOrbit,
double referenceRadius,
T mu,
double c20,
double c30,
double c40,
double c50,
double M2)
Build a propagator from orbit and potential.
|
FieldBrouwerLyddanePropagator(FieldOrbit<T> initialOrbit,
T mass,
double referenceRadius,
T mu,
double c20,
double c30,
double c40,
double c50,
double M2)
Build a propagator from orbit, mass and potential.
|
FieldBrouwerLyddanePropagator(FieldOrbit<T> initialOrbit,
T mass,
UnnormalizedSphericalHarmonicsProvider provider,
double M2)
Build a propagator from orbit, mass and potential provider.
|
FieldBrouwerLyddanePropagator(FieldOrbit<T> initialOrbit,
UnnormalizedSphericalHarmonicsProvider provider,
double M2)
Build a propagator from orbit and potential provider.
|
FieldBrouwerLyddanePropagator(FieldOrbit<T> initialOrbit,
UnnormalizedSphericalHarmonicsProvider provider,
PropagationType initialType,
double M2)
Build a propagator from orbit and potential provider.
|
Modifier and Type | Method and Description |
---|---|
double |
getM2()
Get the value of the M2 drag parameter.
|
protected T |
getMass(FieldAbsoluteDate<T> date)
Get the mass.
|
protected List<ParameterDriver> |
getParametersDrivers()
Get the parameters driver for propagation model.
|
FieldKeplerianOrbit<T> |
propagateOrbit(FieldAbsoluteDate<T> date,
T[] parameters)
Extrapolate an orbit up to a specific target date.
|
void |
resetInitialState(FieldSpacecraftState<T> state)
Reset the propagator initial state.
|
void |
resetInitialState(FieldSpacecraftState<T> state,
PropagationType stateType)
Reset the propagator initial state.
|
protected void |
resetIntermediateState(FieldSpacecraftState<T> state,
boolean forward)
Reset an intermediate state.
|
acceptStep, addEventDetector, basicPropagate, clearEventsDetectors, getEphemerisGenerator, getEventsDetectors, getParameters, getPvProvider, propagate
addAdditionalStateProvider, getAdditionalStateProviders, getAttitudeProvider, getField, getFrame, getInitialState, getManagedAdditionalStates, getMultiplexer, getPVCoordinates, getStartDate, initializePropagation, isAdditionalStateManaged, propagate, setAttitudeProvider, setStartDate, stateChanged, updateAdditionalStates, updateUnmanagedStates
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
clearStepHandlers, setStepHandler, setStepHandler
public FieldBrouwerLyddanePropagator(FieldOrbit<T> initialOrbit, UnnormalizedSphericalHarmonicsProvider provider, double M2)
Mass and attitude provider are set to unspecified non-null arbitrary values.
Using this constructor, an initial osculating orbit is considered.
initialOrbit
- initial orbitprovider
- for un-normalized zonal coefficientsM2
- value of empirical drag coefficient in rad/s².
If equal to BrouwerLyddanePropagator.M2
drag is not computedFieldBrouwerLyddanePropagator(FieldOrbit, UnnormalizedSphericalHarmonicsProvider, PropagationType, double)
public FieldBrouwerLyddanePropagator(FieldOrbit<T> initialOrbit, AttitudeProvider attitude, T mass, UnnormalizedSphericalHarmonicsProvider provider, UnnormalizedSphericalHarmonicsProvider.UnnormalizedSphericalHarmonics harmonics, double M2)
Using this constructor, an initial osculating orbit is considered.
initialOrbit
- initial orbitattitude
- attitude providermass
- spacecraft massprovider
- for un-normalized zonal coefficientsharmonics
- provider.onDate(initialOrbit.getDate())
M2
- value of empirical drag coefficient in rad/s².
If equal to BrouwerLyddanePropagator.M2
drag is not computedFieldBrouwerLyddanePropagator(FieldOrbit, AttitudeProvider, CalculusFieldElement,
UnnormalizedSphericalHarmonicsProvider, UnnormalizedSphericalHarmonicsProvider.UnnormalizedSphericalHarmonics, PropagationType, double)
public FieldBrouwerLyddanePropagator(FieldOrbit<T> initialOrbit, double referenceRadius, T mu, double c20, double c30, double c40, double c50, double M2)
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.
initialOrbit
- initial orbitreferenceRadius
- 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)M2
- value of empirical drag coefficient in rad/s².
If equal to BrouwerLyddanePropagator.M2
drag is not computedConstants
,
FieldBrouwerLyddanePropagator(FieldOrbit, AttitudeProvider, double, CalculusFieldElement, double, double, double, double, double)
public FieldBrouwerLyddanePropagator(FieldOrbit<T> initialOrbit, T mass, UnnormalizedSphericalHarmonicsProvider provider, double M2)
Attitude law is set to an unspecified non-null arbitrary value.
Using this constructor, an initial osculating orbit is considered.
initialOrbit
- initial orbitmass
- spacecraft massprovider
- for un-normalized zonal coefficientsM2
- value of empirical drag coefficient in rad/s².
If equal to BrouwerLyddanePropagator.M2
drag is not computedFieldBrouwerLyddanePropagator(FieldOrbit, AttitudeProvider, CalculusFieldElement, UnnormalizedSphericalHarmonicsProvider, double)
public FieldBrouwerLyddanePropagator(FieldOrbit<T> initialOrbit, T mass, double referenceRadius, T mu, double c20, double c30, double c40, double c50, double M2)
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.
initialOrbit
- initial orbitmass
- spacecraft massreferenceRadius
- 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)M2
- value of empirical drag coefficient in rad/s².
If equal to BrouwerLyddanePropagator.M2
drag is not computedFieldBrouwerLyddanePropagator(FieldOrbit, AttitudeProvider, CalculusFieldElement, double, CalculusFieldElement, double, double, double, double, double)
public FieldBrouwerLyddanePropagator(FieldOrbit<T> initialOrbit, AttitudeProvider attitudeProv, UnnormalizedSphericalHarmonicsProvider provider, double M2)
Mass is set to an unspecified non-null arbitrary value.
Using this constructor, an initial osculating orbit is considered.
initialOrbit
- initial orbitattitudeProv
- attitude providerprovider
- for un-normalized zonal coefficientsM2
- value of empirical drag coefficient in rad/s².
If equal to BrouwerLyddanePropagator.M2
drag is not computedpublic FieldBrouwerLyddanePropagator(FieldOrbit<T> initialOrbit, AttitudeProvider attitudeProv, double referenceRadius, T mu, double c20, double c30, double c40, double c50, double M2)
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.
initialOrbit
- initial orbitattitudeProv
- attitude providerreferenceRadius
- 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)M2
- value of empirical drag coefficient in rad/s².
If equal to BrouwerLyddanePropagator.M2
drag is not computedpublic FieldBrouwerLyddanePropagator(FieldOrbit<T> initialOrbit, AttitudeProvider attitudeProv, T mass, UnnormalizedSphericalHarmonicsProvider provider, double M2)
Using this constructor, an initial osculating orbit is considered.
initialOrbit
- initial orbitattitudeProv
- attitude providermass
- spacecraft massprovider
- for un-normalized zonal coefficientsM2
- value of empirical drag coefficient in rad/s².
If equal to BrouwerLyddanePropagator.M2
drag is not computedFieldBrouwerLyddanePropagator(FieldOrbit, AttitudeProvider, CalculusFieldElement, UnnormalizedSphericalHarmonicsProvider, PropagationType, double)
public FieldBrouwerLyddanePropagator(FieldOrbit<T> initialOrbit, AttitudeProvider attitudeProv, T mass, double referenceRadius, T mu, double c20, double c30, double c40, double c50, double M2)
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.
initialOrbit
- initial orbitattitudeProv
- attitude providermass
- spacecraft massreferenceRadius
- 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)M2
- value of empirical drag coefficient in rad/s².
If equal to BrouwerLyddanePropagator.M2
drag is not computedFieldBrouwerLyddanePropagator(FieldOrbit, AttitudeProvider, CalculusFieldElement, double, CalculusFieldElement, double, double, double, double, PropagationType, double)
public FieldBrouwerLyddanePropagator(FieldOrbit<T> initialOrbit, UnnormalizedSphericalHarmonicsProvider provider, PropagationType initialType, double M2)
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 Brouwer-Lyddane orbit or an osculating one.
initialOrbit
- initial orbitprovider
- for un-normalized zonal coefficientsinitialType
- initial orbit type (mean Brouwer-Lyddane orbit or osculating orbit)M2
- value of empirical drag coefficient in rad/s².
If equal to BrouwerLyddanePropagator.M2
drag is not computedpublic FieldBrouwerLyddanePropagator(FieldOrbit<T> initialOrbit, AttitudeProvider attitudeProv, T mass, UnnormalizedSphericalHarmonicsProvider provider, PropagationType initialType, double M2)
Using this constructor, it is possible to define the initial orbit as a mean Brouwer-Lyddane orbit or an osculating one.
initialOrbit
- initial orbitattitudeProv
- attitude providermass
- spacecraft massprovider
- for un-normalized zonal coefficientsinitialType
- initial orbit type (mean Brouwer-Lyddane orbit or osculating orbit)M2
- value of empirical drag coefficient in rad/s².
If equal to BrouwerLyddanePropagator.M2
drag is not computedpublic FieldBrouwerLyddanePropagator(FieldOrbit<T> initialOrbit, AttitudeProvider attitude, T mass, UnnormalizedSphericalHarmonicsProvider provider, UnnormalizedSphericalHarmonicsProvider.UnnormalizedSphericalHarmonics harmonics, PropagationType initialType, double M2)
Using this constructor, it is possible to define the initial orbit as a mean Brouwer-Lyddane orbit or an osculating one.
initialOrbit
- initial orbitattitude
- attitude providermass
- spacecraft massprovider
- for un-normalized zonal coefficientsharmonics
- provider.onDate(initialOrbit.getDate())
initialType
- initial orbit type (mean Brouwer-Lyddane orbit or osculating orbit)M2
- value of empirical drag coefficient in rad/s².
If equal to BrouwerLyddanePropagator.M2
drag is not computedpublic FieldBrouwerLyddanePropagator(FieldOrbit<T> initialOrbit, AttitudeProvider attitudeProv, T mass, double referenceRadius, T mu, double c20, double c30, double c40, double c50, PropagationType initialType, double M2)
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 Brouwer-Lyddane orbit or an osculating one.
initialOrbit
- initial orbitattitudeProv
- attitude providermass
- spacecraft massreferenceRadius
- 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)initialType
- initial orbit type (mean Brouwer-Lyddane orbit or osculating orbit)M2
- value of empirical drag coefficient in rad/s².
If equal to BrouwerLyddanePropagator.M2
drag is not computedpublic void resetInitialState(FieldSpacecraftState<T> state)
The new initial state to consider must be defined with an osculating orbit.
resetInitialState
in interface FieldPropagator<T extends CalculusFieldElement<T>>
resetInitialState
in class FieldAbstractPropagator<T extends CalculusFieldElement<T>>
state
- new initial state to considerresetInitialState(FieldSpacecraftState, PropagationType)
public void resetInitialState(FieldSpacecraftState<T> state, PropagationType stateType)
state
- new initial state to considerstateType
- mean Brouwer-Lyddane orbit or osculating orbitprotected void resetIntermediateState(FieldSpacecraftState<T> state, boolean forward)
resetIntermediateState
in class FieldAbstractAnalyticalPropagator<T extends CalculusFieldElement<T>>
state
- new intermediate state to considerforward
- if true, the intermediate state is valid for
propagations after itselfpublic FieldKeplerianOrbit<T> propagateOrbit(FieldAbsoluteDate<T> date, T[] parameters)
propagateOrbit
in class FieldAbstractAnalyticalPropagator<T extends CalculusFieldElement<T>>
date
- target date for the orbitparameters
- model parameterspublic double getM2()
protected T getMass(FieldAbsoluteDate<T> date)
getMass
in class FieldAbstractAnalyticalPropagator<T extends CalculusFieldElement<T>>
date
- target date for the orbitprotected List<ParameterDriver> getParametersDrivers()
getParametersDrivers
in class FieldAbstractAnalyticalPropagator<T extends CalculusFieldElement<T>>
Copyright © 2002-2022 CS GROUP. All rights reserved.