Class FieldEcksteinHechlerPropagator<T extends org.hipparchus.RealFieldElement<T>>
- java.lang.Object
-
- org.orekit.propagation.FieldAbstractPropagator<T>
-
- org.orekit.propagation.analytical.FieldAbstractAnalyticalPropagator<T>
-
- org.orekit.propagation.analytical.FieldEcksteinHechlerPropagator<T>
-
- All Implemented Interfaces:
FieldPropagator<T>
,FieldPVCoordinatesProvider<T>
public class FieldEcksteinHechlerPropagator<T extends org.hipparchus.RealFieldElement<T>> extends FieldAbstractAnalyticalPropagator<T>
This class propagates aFieldSpacecraftState
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
-
-
Field Summary
-
Fields inherited from interface org.orekit.propagation.FieldPropagator
DEFAULT_LAW, DEFAULT_MASS, EPHEMERIS_GENERATION_MODE, MASTER_MODE, SLAVE_MODE
-
-
Constructor Summary
Constructors Constructor Description FieldEcksteinHechlerPropagator(FieldOrbit<T> initialOrbit, double referenceRadius, double mu, double c20, double c30, double c40, double c50, double c60)
Build a propagator from FieldOrbitand potential. 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. FieldEcksteinHechlerPropagator(FieldOrbit<T> initialOrbit, AttitudeProvider attitudeProv, UnnormalizedSphericalHarmonicsProvider provider)
Build a propagator from FieldOrbit, attitude provider and potential provider. 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. FieldEcksteinHechlerPropagator(FieldOrbit<T> initialOrbit, AttitudeProvider attitudeProv, T mass, UnnormalizedSphericalHarmonicsProvider provider)
Build a propagator from FieldOrbit, attitude provider, mass and potential provider. FieldEcksteinHechlerPropagator(FieldOrbit<T> initialOrbit, AttitudeProvider attitude, T mass, UnnormalizedSphericalHarmonicsProvider provider, UnnormalizedSphericalHarmonicsProvider.UnnormalizedSphericalHarmonics harmonics)
Private helper constructor.FieldEcksteinHechlerPropagator(FieldOrbit<T> initialOrbit, UnnormalizedSphericalHarmonicsProvider provider)
Build a propagator from FieldOrbitand potential provider. 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. FieldEcksteinHechlerPropagator(FieldOrbit<T> initialOrbit, T mass, UnnormalizedSphericalHarmonicsProvider provider)
Build a propagator from FieldOrbit, mass and potential provider.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description protected T
getMass(FieldAbsoluteDate<T> date)
Get the mass.static <T extends org.hipparchus.RealFieldElement<T>>
TnormalizeAngle(T a, T center)
Normalize an angle in a 2π wide interval around a center value.FieldCartesianOrbit<T>
propagateOrbit(FieldAbsoluteDate<T> date)
Extrapolate an orbit up to a specific target date.void
resetInitialState(FieldSpacecraftState<T> state)
Reset the propagator initial state.protected void
resetIntermediateState(FieldSpacecraftState<T> state, boolean forward)
Reset an intermediate state.-
Methods inherited from class org.orekit.propagation.analytical.FieldAbstractAnalyticalPropagator
acceptStep, addEventDetector, basicPropagate, clearEventsDetectors, getEventsDetectors, getGeneratedEphemeris, getPvProvider, propagate
-
Methods inherited from class org.orekit.propagation.FieldAbstractPropagator
addAdditionalStateProvider, getAdditionalStateProviders, getAttitudeProvider, getField, getFixedStepSize, getFrame, getInitialState, getManagedAdditionalStates, getMode, getPVCoordinates, getStartDate, getStepHandler, isAdditionalStateManaged, propagate, setAttitudeProvider, setEphemerisMode, setMasterMode, setMasterMode, setSlaveMode, setStartDate, updateAdditionalStates
-
-
-
-
Constructor Detail
-
FieldEcksteinHechlerPropagator
public FieldEcksteinHechlerPropagator(FieldOrbit<T> initialOrbit, UnnormalizedSphericalHarmonicsProvider provider)
Build a propagator from FieldOrbitand potential provider. Mass and attitude provider are set to unspecified non-null arbitrary values.
- Parameters:
initialOrbit
- initial FieldOrbitprovider
- for un-normalized zonal coefficients
-
FieldEcksteinHechlerPropagator
public FieldEcksteinHechlerPropagator(FieldOrbit<T> initialOrbit, AttitudeProvider attitude, T mass, UnnormalizedSphericalHarmonicsProvider provider, UnnormalizedSphericalHarmonicsProvider.UnnormalizedSphericalHarmonics harmonics)
Private helper constructor.- Parameters:
initialOrbit
- initial FieldOrbitattitude
- attitude providermass
- spacecraft massprovider
- for un-normalized zonal coefficientsharmonics
-provider.onDate(initialOrbit.getDate())
-
FieldEcksteinHechlerPropagator
public FieldEcksteinHechlerPropagator(FieldOrbit<T> initialOrbit, double referenceRadius, double mu, double c20, double c30, double c40, double c50, double c60)
Build a propagator from FieldOrbitand 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 FieldOrbitreferenceRadius
- 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 FieldOrbitmass
- spacecraft massprovider
- 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 FieldOrbitmass
- 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)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 FieldOrbitattitudeProv
- attitude providerprovider
- 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 FieldOrbitattitudeProv
- 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)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 FieldOrbitattitudeProv
- attitude providermass
- spacecraft massprovider
- 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 FieldOrbitattitudeProv
- 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)c60
- un-normalized zonal coefficient (about -5.41e-7 for Earth)
-
-
Method Detail
-
resetInitialState
public void resetInitialState(FieldSpacecraftState<T> state)
Reset the propagator initial state.- Specified by:
resetInitialState
in interfaceFieldPropagator<T extends org.hipparchus.RealFieldElement<T>>
- Overrides:
resetInitialState
in classFieldAbstractPropagator<T extends org.hipparchus.RealFieldElement<T>>
- Parameters:
state
- new initial state to consider
-
resetIntermediateState
protected void resetIntermediateState(FieldSpacecraftState<T> state, boolean forward)
Reset an intermediate state.- Specified by:
resetIntermediateState
in classFieldAbstractAnalyticalPropagator<T extends org.hipparchus.RealFieldElement<T>>
- Parameters:
state
- new intermediate state to considerforward
- if true, the intermediate state is valid for propagations after itself
-
propagateOrbit
public FieldCartesianOrbit<T> propagateOrbit(FieldAbsoluteDate<T> date)
Extrapolate an orbit up to a specific target date.- Specified by:
propagateOrbit
in classFieldAbstractAnalyticalPropagator<T extends org.hipparchus.RealFieldElement<T>>
- Parameters:
date
- target date for the orbit- Returns:
- extrapolated parameters
-
getMass
protected T getMass(FieldAbsoluteDate<T> date)
Get the mass.- Specified by:
getMass
in classFieldAbstractAnalyticalPropagator<T extends org.hipparchus.RealFieldElement<T>>
- Parameters:
date
- target date for the orbit- Returns:
- mass mass
-
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 normalizecenter
- center of the desired 2π interval for the result- Returns:
- a-2kπ with integer k and center-π <= a-2kπ <= center+π
- Since:
- 1.2
- normalize an angle between 0 and 2π:
-
-