public class EcksteinHechlerPropagator extends AbstractAnalyticalPropagator
SpacecraftState
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).
Note that before version 7.0, there was a large inconsistency in the generated
orbits, and it was fixed as of version 7.0 of Orekit, with a visible side effect.
The problems is that if the circular parameters produced by the Eckstein-Hechler
model are used to build an orbit considered to be osculating, the velocity deduced
from this orbit was inconsistent with the position evolution! The reason is
that the model includes non-Keplerian effects but it does not include a corresponding
circular/Cartesian conversion. As a consequence, all subsequent computation involving
velocity were wrong. This includes attitude modes like yaw compensation and Doppler
effect. As this effect was considered serious enough and as accurate velocities were
considered important, the propagator now generates Cartesian
orbits
which are built in a special way to ensure consistency throughout propagation.
A side effect is that if circular parameters are rebuilt by user from these propagated
Cartesian orbit, the circular parameters will generally not match the initial
orbit (differences in semi-major axis can exceed 120 m). The position however will
match to sub-micrometer level, and this position will be identical to the positions
that were generated by previous versions (in other words, the internals of the models
have not been changed, only the output parameters have been changed). The correctness
of the initialization has been assessed and is good, as it allows the subsequent orbit
to remain close to a numerical reference orbit.
If users need a more definitive initialization of an Eckstein-Hechler propagator, they
should consider using a propagator converter
to initialize their Eckstein-Hechler propagator using a complete
sample instead of just a single initial orbit.
Orbit
DEFAULT_MASS
Constructor and Description |
---|
EcksteinHechlerPropagator(Orbit initialOrbit,
AttitudeProvider attitudeProv,
double referenceRadius,
double mu,
double c20,
double c30,
double c40,
double c50,
double c60)
Build a propagator from orbit, attitude provider and potential.
|
EcksteinHechlerPropagator(Orbit initialOrbit,
AttitudeProvider attitudeProv,
double mass,
double referenceRadius,
double mu,
double c20,
double c30,
double c40,
double c50,
double c60)
Build a propagator from orbit, attitude provider, mass and potential.
|
EcksteinHechlerPropagator(Orbit initialOrbit,
AttitudeProvider attitudeProv,
double mass,
double referenceRadius,
double mu,
double c20,
double c30,
double c40,
double c50,
double c60,
PropagationType initialType)
Build a propagator from orbit, attitude provider, mass and potential.
|
EcksteinHechlerPropagator(Orbit initialOrbit,
AttitudeProvider attitudeProv,
double mass,
UnnormalizedSphericalHarmonicsProvider provider)
Build a propagator from orbit, attitude provider, mass and potential provider.
|
EcksteinHechlerPropagator(Orbit initialOrbit,
AttitudeProvider attitudeProv,
double mass,
UnnormalizedSphericalHarmonicsProvider provider,
PropagationType initialType)
Build a propagator from orbit, attitude provider, mass and potential provider.
|
EcksteinHechlerPropagator(Orbit initialOrbit,
AttitudeProvider attitude,
double mass,
UnnormalizedSphericalHarmonicsProvider provider,
UnnormalizedSphericalHarmonicsProvider.UnnormalizedSphericalHarmonics harmonics)
Private helper constructor.
|
EcksteinHechlerPropagator(Orbit initialOrbit,
AttitudeProvider attitude,
double mass,
UnnormalizedSphericalHarmonicsProvider provider,
UnnormalizedSphericalHarmonicsProvider.UnnormalizedSphericalHarmonics harmonics,
PropagationType initialType)
Private helper constructor.
|
EcksteinHechlerPropagator(Orbit initialOrbit,
AttitudeProvider attitudeProv,
UnnormalizedSphericalHarmonicsProvider provider)
Build a propagator from orbit, attitude provider and potential provider.
|
EcksteinHechlerPropagator(Orbit initialOrbit,
double referenceRadius,
double mu,
double c20,
double c30,
double c40,
double c50,
double c60)
Build a propagator from orbit and potential.
|
EcksteinHechlerPropagator(Orbit initialOrbit,
double mass,
double referenceRadius,
double mu,
double c20,
double c30,
double c40,
double c50,
double c60)
Build a propagator from orbit, mass and potential.
|
EcksteinHechlerPropagator(Orbit initialOrbit,
double mass,
UnnormalizedSphericalHarmonicsProvider provider)
Build a propagator from orbit, mass and potential provider.
|
EcksteinHechlerPropagator(Orbit initialOrbit,
UnnormalizedSphericalHarmonicsProvider provider)
Build a propagator from orbit and potential provider.
|
EcksteinHechlerPropagator(Orbit initialOrbit,
UnnormalizedSphericalHarmonicsProvider provider,
PropagationType initialType)
Build a propagator from orbit and potential provider.
|
Modifier and Type | Method and Description |
---|---|
protected AbstractMatricesHarvester |
createHarvester(String stmName,
RealMatrix initialStm,
DoubleArrayDictionary initialJacobianColumns)
Create the harvester suitable for propagator.
|
double[] |
getCk0()
Get the un-normalized zonal coefficients.
|
protected double |
getMass(AbsoluteDate date)
Get the mass.
|
double |
getMu()
Get the central attraction coefficient μ.
|
double |
getReferenceRadius()
Get the reference radius of the central body attraction model.
|
CartesianOrbit |
propagateOrbit(AbsoluteDate date)
Extrapolate an orbit up to a specific target date.
|
void |
resetInitialState(SpacecraftState state)
Reset the propagator initial state.
|
void |
resetInitialState(SpacecraftState state,
PropagationType stateType)
Reset the propagator initial state.
|
protected void |
resetIntermediateState(SpacecraftState state,
boolean forward)
Reset an intermediate state.
|
acceptStep, addEventDetector, basicPropagate, clearEventsDetectors, getEphemerisGenerator, getEventsDetectors, getJacobiansColumnsNames, getPvProvider, propagate
addAdditionalStateProvider, getAdditionalStateProviders, getAttitudeProvider, getFrame, getHarvester, getInitialState, getManagedAdditionalStates, getMultiplexer, getPVCoordinates, getStartDate, initializePropagation, isAdditionalStateManaged, propagate, setAttitudeProvider, setStartDate, setupMatricesComputation, stateChanged, updateAdditionalStates, updateUnmanagedStates
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
clearStepHandlers, getDefaultLaw, setStepHandler, setStepHandler
public EcksteinHechlerPropagator(Orbit initialOrbit, UnnormalizedSphericalHarmonicsProvider provider)
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 coefficientsEcksteinHechlerPropagator(Orbit, AttitudeProvider,
UnnormalizedSphericalHarmonicsProvider)
,
EcksteinHechlerPropagator(Orbit, UnnormalizedSphericalHarmonicsProvider,
PropagationType)
public EcksteinHechlerPropagator(Orbit initialOrbit, AttitudeProvider attitude, double mass, UnnormalizedSphericalHarmonicsProvider provider, UnnormalizedSphericalHarmonicsProvider.UnnormalizedSphericalHarmonics harmonics)
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())
EcksteinHechlerPropagator(Orbit, AttitudeProvider, double,
UnnormalizedSphericalHarmonicsProvider,
UnnormalizedSphericalHarmonicsProvider.UnnormalizedSphericalHarmonics,
PropagationType)
public EcksteinHechlerPropagator(Orbit initialOrbit, double referenceRadius, double mu, double c20, double c30, double c40, double c50, double c60)
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)c60
- un-normalized zonal coefficient (about -5.41e-7 for Earth)Constants
,
EcksteinHechlerPropagator(Orbit, AttitudeProvider, double, double, double,
double, double, double, double, double)
public EcksteinHechlerPropagator(Orbit initialOrbit, double mass, UnnormalizedSphericalHarmonicsProvider provider)
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 coefficientsEcksteinHechlerPropagator(Orbit, AttitudeProvider, double,
UnnormalizedSphericalHarmonicsProvider)
public EcksteinHechlerPropagator(Orbit initialOrbit, double mass, double referenceRadius, double mu, double c20, double c30, double c40, double c50, double c60)
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)c60
- un-normalized zonal coefficient (about -5.41e-7 for Earth)EcksteinHechlerPropagator(Orbit, AttitudeProvider, double, double, double,
double, double, double, double, double)
public EcksteinHechlerPropagator(Orbit initialOrbit, AttitudeProvider attitudeProv, UnnormalizedSphericalHarmonicsProvider provider)
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 coefficientspublic EcksteinHechlerPropagator(Orbit initialOrbit, AttitudeProvider attitudeProv, double referenceRadius, double mu, double c20, double c30, double c40, double c50, double c60)
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)c60
- un-normalized zonal coefficient (about -5.41e-7 for Earth)public EcksteinHechlerPropagator(Orbit initialOrbit, AttitudeProvider attitudeProv, double mass, UnnormalizedSphericalHarmonicsProvider provider)
Using this constructor, an initial osculating orbit is considered.
initialOrbit
- initial orbitattitudeProv
- attitude providermass
- spacecraft massprovider
- for un-normalized zonal coefficientsEcksteinHechlerPropagator(Orbit, AttitudeProvider, double,
UnnormalizedSphericalHarmonicsProvider, PropagationType)
public EcksteinHechlerPropagator(Orbit initialOrbit, AttitudeProvider attitudeProv, double mass, double referenceRadius, double mu, double c20, double c30, double c40, double c50, double c60)
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)c60
- un-normalized zonal coefficient (about -5.41e-7 for Earth)EcksteinHechlerPropagator(Orbit, AttitudeProvider, double, double, double,
double, double, double, double, double, PropagationType)
public EcksteinHechlerPropagator(Orbit initialOrbit, UnnormalizedSphericalHarmonicsProvider provider, PropagationType initialType)
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 Eckstein-Hechler orbit or an osculating one.
initialOrbit
- initial orbitprovider
- for un-normalized zonal coefficientsinitialType
- initial orbit type (mean Eckstein-Hechler orbit or osculating orbit)public EcksteinHechlerPropagator(Orbit initialOrbit, AttitudeProvider attitudeProv, double mass, UnnormalizedSphericalHarmonicsProvider provider, PropagationType initialType)
Using this constructor, it is possible to define the initial orbit as a mean Eckstein-Hechler orbit or an osculating one.
initialOrbit
- initial orbitattitudeProv
- attitude providermass
- spacecraft massprovider
- for un-normalized zonal coefficientsinitialType
- initial orbit type (mean Eckstein-Hechler orbit or osculating orbit)public EcksteinHechlerPropagator(Orbit initialOrbit, AttitudeProvider attitude, double mass, UnnormalizedSphericalHarmonicsProvider provider, UnnormalizedSphericalHarmonicsProvider.UnnormalizedSphericalHarmonics harmonics, PropagationType initialType)
Using this constructor, it is possible to define the initial orbit as a mean Eckstein-Hechler 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 Eckstein-Hechler orbit or osculating orbit)public EcksteinHechlerPropagator(Orbit initialOrbit, AttitudeProvider attitudeProv, double mass, double referenceRadius, double mu, double c20, double c30, double c40, double c50, double c60, PropagationType initialType)
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 Eckstein-Hechler 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)c60
- un-normalized zonal coefficient (about -5.41e-7 for Earth)initialType
- initial orbit type (mean Eckstein-Hechler orbit or osculating orbit)public void resetInitialState(SpacecraftState state)
The new initial state to consider must be defined with an osculating orbit.
resetInitialState
in interface Propagator
resetInitialState
in class AbstractPropagator
state
- new initial state to considerresetInitialState(SpacecraftState, PropagationType)
public void resetInitialState(SpacecraftState state, PropagationType stateType)
state
- new initial state to considerstateType
- mean Eckstein-Hechler orbit or osculating orbitprotected void resetIntermediateState(SpacecraftState state, boolean forward)
resetIntermediateState
in class AbstractAnalyticalPropagator
state
- new intermediate state to considerforward
- if true, the intermediate state is valid for
propagations after itselfpublic CartesianOrbit propagateOrbit(AbsoluteDate date)
propagateOrbit
in class AbstractAnalyticalPropagator
date
- target date for the orbitpublic double getMu()
public double[] getCk0()
public double getReferenceRadius()
protected AbstractMatricesHarvester createHarvester(String stmName, RealMatrix initialStm, DoubleArrayDictionary initialJacobianColumns)
createHarvester
in class AbstractPropagator
stmName
- State Transition Matrix state nameinitialStm
- initial State Transition Matrix ∂Y/∂Y₀,
if null (which is the most frequent case), assumed to be 6x6 identityinitialJacobianColumns
- initial columns of the Jacobians matrix with respect to parameters,
if null or if some selected parameters are missing from the dictionary, the corresponding
initial column is assumed to be 0protected double getMass(AbsoluteDate date)
getMass
in class AbstractAnalyticalPropagator
date
- target date for the orbitCopyright © 2002-2022 CS GROUP. All rights reserved.