Class DSSTZonal
- java.lang.Object
-
- org.orekit.propagation.semianalytical.dsst.forces.DSSTZonal
-
- All Implemented Interfaces:
EventDetectorsProvider
,DSSTForceModel
,ParameterDriversProvider
public class DSSTZonal extends Object implements DSSTForceModel
Zonal contribution to the central body gravitational perturbation.- Author:
- Romain Di Costanzo, Pascal Parraud, Bryan Cazabonne (field translation)
-
-
Field Summary
Fields Modifier and Type Field Description static String
SHORT_PERIOD_PREFIX
Name of the prefix for short period coefficients keys.-
Fields inherited from interface org.orekit.propagation.events.EventDetectorsProvider
DATATION_ACCURACY
-
-
Constructor Summary
Constructors Constructor Description DSSTZonal(UnnormalizedSphericalHarmonicsProvider provider)
Constructor with bodyFixedFrame = orbit frame, and default reference values.DSSTZonal(UnnormalizedSphericalHarmonicsProvider provider, int maxDegreeShortPeriodics, int maxEccPowShortPeriodics, int maxFrequencyShortPeriodics)
Constructor with bodyFixedFrame = orbit frame.DSSTZonal(Frame bodyFixedFrame, UnnormalizedSphericalHarmonicsProvider provider)
Constructor with default reference values.DSSTZonal(Frame bodyFixedFrame, UnnormalizedSphericalHarmonicsProvider provider, int maxDegreeShortPeriodics, int maxEccPowShortPeriodics, int maxFrequencyShortPeriodics)
Constructor.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description <T extends CalculusFieldElement<T>>
T[]getMeanElementRate(FieldSpacecraftState<T> spacecraftState, FieldAuxiliaryElements<T> auxiliaryElements, T[] parameters)
Computes the mean equinoctial elements rates dai / dt.double[]
getMeanElementRate(SpacecraftState spacecraftState, AuxiliaryElements auxiliaryElements, double[] parameters)
Computes the mean equinoctial elements rates dai / dt.List<ParameterDriver>
getParametersDrivers()
Get the drivers for parameters.UnnormalizedSphericalHarmonicsProvider
getProvider()
Get the spherical harmonics provider.List<ShortPeriodTerms>
initializeShortPeriodTerms(AuxiliaryElements auxiliaryElements, PropagationType type, double[] parameters)
Performs initialization prior to propagation for the current force model.<T extends CalculusFieldElement<T>>
List<FieldShortPeriodTerms<T>>initializeShortPeriodTerms(FieldAuxiliaryElements<T> auxiliaryElements, PropagationType type, T[] parameters)
Performs initialization prior to propagation for the current force model.void
registerAttitudeProvider(AttitudeProvider attitudeProvider)
Register an attitude provider.void
updateShortPeriodTerms(double[] parameters, SpacecraftState... meanStates)
Update the short period terms.<T extends CalculusFieldElement<T>>
voidupdateShortPeriodTerms(T[] parameters, FieldSpacecraftState<T>... meanStates)
Update the short period terms.-
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.semianalytical.dsst.forces.DSSTForceModel
extractParameters, extractParameters, getEventDetectors, getFieldEventDetectors, init, init
-
Methods inherited from interface org.orekit.propagation.events.EventDetectorsProvider
getDateDetector, getEventDetectors, getFieldDateDetector, getFieldEventDetectors
-
Methods inherited from interface org.orekit.utils.ParameterDriversProvider
getNbParametersDriversValue, getParameterDriver, getParameters, getParameters, getParameters, getParameters, getParametersAllValues, getParametersAllValues, isSupported
-
-
-
-
Field Detail
-
SHORT_PERIOD_PREFIX
public static final String SHORT_PERIOD_PREFIX
Name of the prefix for short period coefficients keys.- See Also:
- Constant Field Values
-
-
Constructor Detail
-
DSSTZonal
public DSSTZonal(Frame bodyFixedFrame, UnnormalizedSphericalHarmonicsProvider provider)
Constructor with default reference values.When this constructor is used, maximum allowed values are used for the short periodic coefficients:
-
maxDegreeShortPeriodics
is set toprovider.getMaxDegree()
-
maxEccPowShortPeriodics
is set tomin(provider.getMaxDegree() - 1, 4)
. This parameter should not exceed 4 as higher values will exceed computer capacity -
maxFrequencyShortPeriodics
is set to2 * provider.getMaxDegree() + 1
- Parameters:
bodyFixedFrame
- rotating body frameIf set, this frame will be used to compute the Earth pole direction and the zonal contribution. If not, the inertial frame from the propagator will be used.
Ideally this frame should be always set to ITRF. However, using TOD is advised since it's generally a good trade-off between performance and precision.provider
- provider for spherical harmonics- Since:
- 12.1
-
-
DSSTZonal
public DSSTZonal(UnnormalizedSphericalHarmonicsProvider provider)
Constructor with bodyFixedFrame = orbit frame, and default reference values.Kept for compatibility with anterior versions.
Setting bodyFixedFrame to null will lead to large errors if the orbit frame is far from Earth rotating frame (GCRF, EME2000...). The error gets smaller as the orbit frame gets closer to Earth rotating frame (MOD, then TOD).
- Parameters:
provider
- provider for spherical harmonics- Since:
- 10.1
- See Also:
- issue-1104 on the forge
When this constructor is used, maximum allowed values are used for the short periodic coefficients:
- #maxDegreeShortPeriodics is set to
provider.getMaxDegree()
- #maxEccPowShortPeriodics is set to
min(provider.getMaxDegree() - 1, 4)
. This parameter should not exceed 4 as higher values will exceed computer capacity - #maxFrequencyShortPeriodics is set to
2 * provider.getMaxDegree() + 1
- #maxDegreeShortPeriodics is set to
-
DSSTZonal
public DSSTZonal(Frame bodyFixedFrame, UnnormalizedSphericalHarmonicsProvider provider, int maxDegreeShortPeriodics, int maxEccPowShortPeriodics, int maxFrequencyShortPeriodics)
Constructor.- Parameters:
bodyFixedFrame
- rotating body frameIf set, this frame will be used to compute the Earth pole direction and the zonal contribution. If not, the inertial frame from the propagator will be used.
Ideally this frame should be always set to ITRF. However, using TOD is advised since it's a good trade-off between performance and precision.provider
- provider for spherical harmonicsmaxDegreeShortPeriodics
- maximum degree to consider for short periodics zonal harmonics potential (must be between 2 andprovider.getMaxDegree()
)maxEccPowShortPeriodics
- maximum power of the eccentricity to be used in short periodic computations (must be between 0 andmaxDegreeShortPeriodics - 1
, but should typically not exceed 4 as higher values will exceed computer capacity)maxFrequencyShortPeriodics
- maximum frequency in true longitude for short periodic computations (must be between 1 and2 * maxDegreeShortPeriodics + 1
)- Since:
- 12.1
-
DSSTZonal
public DSSTZonal(UnnormalizedSphericalHarmonicsProvider provider, int maxDegreeShortPeriodics, int maxEccPowShortPeriodics, int maxFrequencyShortPeriodics)
Constructor with bodyFixedFrame = orbit frame.Added for retro-compatibility with anterior versions for initialization.
Setting bodyFixedFrame to null will lead to large errors if the orbit frame is far from Earth rotating frame (GCRF, EME2000...). The error gets smaller as the orbit frame gets closer to Earth rotating frame (MOD, then TOD).
- Parameters:
provider
- provider for spherical harmonicsmaxDegreeShortPeriodics
- maximum degree to consider for short periodics zonal harmonics potential (must be between 2 andprovider.getMaxDegree()
)maxEccPowShortPeriodics
- maximum power of the eccentricity to be used in short periodic computations (must be between 0 andmaxDegreeShortPeriodics - 1
, but should typically not exceed 4 as higher values will exceed computer capacity)maxFrequencyShortPeriodics
- maximum frequency in true longitude for short periodic computations (must be between 1 and2 * maxDegreeShortPeriodics + 1
)- Since:
- 7.2
- See Also:
- issue-1104 on the forge, issue-1104 on the forge
-
-
Method Detail
-
getProvider
public UnnormalizedSphericalHarmonicsProvider getProvider()
Get the spherical harmonics provider.- Returns:
- the spherical harmonics provider
-
initializeShortPeriodTerms
public List<ShortPeriodTerms> initializeShortPeriodTerms(AuxiliaryElements auxiliaryElements, PropagationType type, double[] parameters)
Performs initialization prior to propagation for the current force model.This method aims at being called at the very beginning of a propagation.
Computes the highest power of the eccentricity to appear in the truncated analytical power series expansion.
This method computes the upper value for the central body potential and determines the maximal power for the eccentricity producing potential terms bigger than a defined tolerance.
- Specified by:
initializeShortPeriodTerms
in interfaceDSSTForceModel
- Parameters:
auxiliaryElements
- auxiliary elements related to the current orbittype
- type of the elements used during the propagationparameters
- values of the force model parameters for specific date (1 value only per parameter driver) obtained for example by callingParameterDriversProvider.getParameters(AbsoluteDate)
on force model.- Returns:
- a list of objects that will hold short period terms (the objects are also retained by the force model, which will update them during propagation)
-
initializeShortPeriodTerms
public <T extends CalculusFieldElement<T>> List<FieldShortPeriodTerms<T>> initializeShortPeriodTerms(FieldAuxiliaryElements<T> auxiliaryElements, PropagationType type, T[] parameters)
Performs initialization prior to propagation for the current force model.This method aims at being called at the very beginning of a propagation.
Computes the highest power of the eccentricity to appear in the truncated analytical power series expansion.
This method computes the upper value for the central body potential and determines the maximal power for the eccentricity producing potential terms bigger than a defined tolerance.
- Specified by:
initializeShortPeriodTerms
in interfaceDSSTForceModel
- Type Parameters:
T
- type of the elements- Parameters:
auxiliaryElements
- auxiliary elements related to the current orbittype
- type of the elements used during the propagationparameters
- values of the force model parameters for specific date (1 value only per parameter driver) obtained for example by callingParameterDriversProvider.getParameters(AbsoluteDate)
on force model orAbstractGradientConverter.getParametersAtStateDate(FieldSpacecraftState, ParameterDriversProvider)
on gradient converter.- Returns:
- a list of objects that will hold short period terms (the objects are also retained by the force model, which will update them during propagation)
-
getMeanElementRate
public double[] getMeanElementRate(SpacecraftState spacecraftState, AuxiliaryElements auxiliaryElements, double[] parameters)
Computes the mean equinoctial elements rates dai / dt.- Specified by:
getMeanElementRate
in interfaceDSSTForceModel
- Parameters:
spacecraftState
- current state information: date, kinematics, attitudeauxiliaryElements
- auxiliary elements related to the current orbitparameters
- values of the force model parameters at state date (only 1 span for each parameter driver) obtained for example by callingParameterDriversProvider.getParameters(AbsoluteDate)
on force model.- Returns:
- the mean element rates dai/dt
-
getMeanElementRate
public <T extends CalculusFieldElement<T>> T[] getMeanElementRate(FieldSpacecraftState<T> spacecraftState, FieldAuxiliaryElements<T> auxiliaryElements, T[] parameters)
Computes the mean equinoctial elements rates dai / dt.- Specified by:
getMeanElementRate
in interfaceDSSTForceModel
- Type Parameters:
T
- type of the elements- Parameters:
spacecraftState
- current state information: date, kinematics, attitudeauxiliaryElements
- auxiliary elements related to the current orbitparameters
- values of the force model parameters at state date (only 1 span for each parameter driver) obtained for example by callingParameterDriversProvider.getParameters(Field, FieldAbsoluteDate)
on force model orAbstractGradientConverter.getParametersAtStateDate(FieldSpacecraftState, ParameterDriversProvider)
on gradient converter.- Returns:
- the mean element rates dai/dt
-
registerAttitudeProvider
public void registerAttitudeProvider(AttitudeProvider attitudeProvider)
Register an attitude provider.Register an attitude provider that can be used by the force model.
- Specified by:
registerAttitudeProvider
in interfaceDSSTForceModel
- Parameters:
attitudeProvider
- theAttitudeProvider
-
updateShortPeriodTerms
public void updateShortPeriodTerms(double[] parameters, SpacecraftState... meanStates)
Update the short period terms.The
short period terms
that will be updated are the ones that were returned during the call toDSSTForceModel.initializeShortPeriodTerms(AuxiliaryElements, PropagationType, double[])
.- Specified by:
updateShortPeriodTerms
in interfaceDSSTForceModel
- Parameters:
parameters
- values of the force model parameters (all span values for each parameters) obtained for example by callingParameterDriversProvider.getParametersAllValues()
on force model. The extract parameter methodDSSTForceModel.extractParameters(double[], AbsoluteDate)
is called in the method to select the right parameter corresponding to the mean state date.meanStates
- mean states information: date, kinematics, attitude
-
updateShortPeriodTerms
public <T extends CalculusFieldElement<T>> void updateShortPeriodTerms(T[] parameters, FieldSpacecraftState<T>... meanStates)
Update the short period terms.The
short period terms
that will be updated are the ones that were returned during the call toDSSTForceModel.initializeShortPeriodTerms(AuxiliaryElements, PropagationType, double[])
.- Specified by:
updateShortPeriodTerms
in interfaceDSSTForceModel
- Type Parameters:
T
- type of the elements- Parameters:
parameters
- values of the force model parameters (all span values for each parameters) obtained for example by callingParameterDriversProvider.getParametersAllValues(Field)
on force model orAbstractGradientConverter.getParameters(FieldSpacecraftState, ParameterDriversProvider)
on gradient converter. The extract parameter methodDSSTForceModel.extractParameters(CalculusFieldElement[], FieldAbsoluteDate)
is called in the method to select the right parameter.meanStates
- mean states information: date, kinematics, attitude
-
getParametersDrivers
public List<ParameterDriver> getParametersDrivers()
Get the drivers for parameters.- Specified by:
getParametersDrivers
in interfaceParameterDriversProvider
- Returns:
- drivers for parameters
-
-