3.1. Integrator Settings¶
As the name suggests, the integrator settings tell the dynamics simulator how to integrate numerically the equations of motion that govern the orbital mechanics to simulate. The IntegratorSettings
are defined using four derived classes, depending on whether the integrator to be used is a fixed step-size integrator or a variable step-size integrator.
- class IntegratorSettings¶
This class is used to define the settings for fixed step-size integration. The constructor for this base class is:
IntegratorSettings< TimeType >( integratorType, simulationStartEpoch, fixedStepSize )
where:
TimeType
Template argument used to set the precision of the time, in general
double
is used. For some application where a high precision is required,tudat::Time
can be used and cast tolong double
.integratorType
AvailableIntegrators
which defines the fixed step-size integrator type to be used. Currently the only options available areeuler
andrungeKutta4
.simulationStartEpoch
TimeType
that defines the simulation’s start epoch.fixedStepSize
TimeType
that defines the fixed step-size to be used either by theeuler
or therungeKutta4
numerical integrator.
- class RungeKuttaVariableStepSizeSettings¶
This class is used to define the settings for the Runge-Kutta variable step-size integration methods, where the error tolerances are defined as a scalar (i.e., each state element has the same tolerance). The constructor for this derived class is:
RungeKuttaVariableStepSizeSettings< TimeType >( simulationStartEpoch, initialTimeStep, coefficientSet, minimumStepSize, maximumStepSize, relativeErrorTolerance, absoluteErrorTolerance, saveFrequency, assessPropagationTerminationConditionDuringIntegrationSubsteps, safetyFactorForNextStepSize, maximumFactorIncreaseForNextStepSize, minimumFactorDecreaseForNextStepSize )
where:
TimeType
Template argument used to set the precision of the time, in general
double
is used. For some application where a high precision is required this can be changed to e.g.long double
.
simulationStartEpoch
TimeType
that defines the simulation’s initial time. It must be adouble
variable-type.initialTimeStep
TimeType
that defines the initial step-size to be used either by therungeKuttaVariableStepSize
numerical integrator. It must be adouble
variable-type.coefficientSet
RungeKuttaCoefficients::CoefficientSets
that defines the coefficient set to be used by therungeKuttaVariableStepSize
numerical integrator. The list of available coefficient sets is given in Integrators.minimumStepSize
TimeType
that defines the minimum step-size that therungeKuttaVariableStepSize
numerical integrator can take.maximumStepSize
TimeType
that defines the maximum step-size that therungeKuttaVariableStepSize
numerical integrator can take.relativeErrorTolerance
TimeType
that defines the relative error tolerance for step size control of therungeKuttaVariableStepSize
numerical integrator.absoluteErrorTolerance
TimeType
that defines the absolute error tolerance for step size control of therungeKuttaVariableStepSize
numerical integrator.saveFrequency
Frequency at which to save the numerical integrated states. For instance, you may want to save one every 15 time steps, to give an output that is less demanding in terms of storage (in this case 15 would be the
saveFrequency
). The default value is 1.assessPropagationTerminationConditionDuringIntegrationSubsteps
Whether the propagation termination conditions should be evaluated during the intermediate sub-steps of the integrator (
true
) or only at the end of each integration step (false
). The default value isfalse
.safetyFactorForNextStepSize
Safety factor for step size control. The default value is 0.8.
maximumFactorIncreaseForNextStepSize
Maximum increase factor in time step in subsequent iterations. The default value is 4.0.
minimumFactorDecreaseForNextStepSize
Minimum decrease factor in time step in subsequent iterations. The default value is 0.1.
- class RungeKuttaVariableStepSizeSettingsScalarTolerances¶
Note
The RungeKuttaVariableStepSizeSettings
class is actually a shorthand for the alias RungeKuttaVariableStepSizeSettingsScalarTolerances
, for compatibility with the previous definition of the Runge-Kutta variable step-size integrator.
- class RungeKuttaVariableStepSizeSettingsVectorTolerances¶
This class is used to define the settings for the Runge-Kutta variable step-size integration methods, where the error tolerances are defined as a vector (i.e., you could set a different absolute tolerance for position and velocity, if the propagated state is expressed in Cartesian elements). The constructor for this derived class is:
RungeKuttaVariableStepSizeSettingsVectorTolerances< TimeType, StateType >( simulationStartEpoch, initialTimeStep, coefficientSet, minimumStepSize, maximumStepSize, relativeErrorTolerance, absoluteErrorTolerance, saveFrequency, assessPropagationTerminationConditionDuringIntegrationSubsteps, safetyFactorForNextStepSize, maximumFactorIncreaseForNextStepSize, minimumFactorDecreaseForNextStepSize )
where most of the input variables are the same as for the previous constructor, except for the following:
StateType
Template argument used to set the format of the state, in general
Eigen::VectorXd
is used. For applications where covariance propagation is also performed, this may beEigen::MatrixXd
. One can also change the precision of the state scalar, such as inEigen::VectorXld
, wherelong double
is used instead ofdouble
.
relativeErrorTolerance
StateType
that defines the relative error tolerance for each state entry, for step size control of therungeKuttaVariableStepSize
numerical integrator.absoluteErrorTolerance
StateType
that defines the absolute error tolerance for each state entry, for step size control of therungeKuttaVariableStepSize
numerical integrator.
- class BulirschStoerIntegratorSettings¶
This class is used to define the settings for variable step-size integration using the Bulirsch-Stoer method. The constructor for this derived class is:
BulirschStoerIntegratorSettings< TimeType >( initialTime, initialTimeStep, extrapolationSequence, maximumNumberOfSteps, minimumStepSize, maximumStepSize, relativeErrorTolerence, absoluteErrorTolerence )
where:
TimeType
Template argument used to set the precision of the time, in general
double
is used. For some application where a high precision is required this can be changed to e.g.long double
.
initialTime
TimeType
that defines the simulation’s initial time. It must be adouble
variable-type.initialTimeStep
TimeType
that defines the initial step-size to be used either by theBulirschStoerIntegrator
numerical integrator. It must be adouble
variable-type.extrapolationSequence
ExtrapolationMethodStepSequences
that defines the extrapolation sequence that is used for theBulirschStoerIntegrator
numerical integrator.maximumNumberOfSteps
Number of integrations that are used for a single extrapolation. It must be a
int
variable-type.minimumStepSize
TimeType
that defines the minimum step-size that theBulirschStoerIntegrator
numerical integrator can take.maximumStepSize
TimeType
that defines the maximum step-size that theBulirschStoerIntegrator
numerical integrator can take.relativeErrorTolerance
TimeType
that defines the relative error tolerance for step size control of theBulirschStoerIntegrator
numerical integrator.absoluteErrorTolerance
TimeType
that defines the absolute error tolerance for step size control of theBulirschStoerIntegrator
numerical integrator.
- class AdamsBashforthMoultonSettings¶
This class is used to define the settings for variable step-size integration using the Adams-Bashfort-Moulton method. The constructor for this derived class is:
AdamsBashforthMoultonSettings< TimeType >( initialTime, initialTimeStep, minimumStepSize, maximumStepSize, relativeErrorTolerence, absoluteErrorTolerence, minimumOrder, maximumOrder )
where:
TimeType
Template argument used to set the precision of the time, in general
double
is used. For some application where a high precision is required this can be changed to e.g.long double
.
initialTime
TimeType
that defines the simulation’s initial time. It must be adouble
variable-type.initialTimeStep
TimeType
that defines the initial step-size to be used either by theAdamsBashforthMoultonIntegrator
numerical integrator. It must be adouble
variable-type.minimumStepSize
TimeType
that defines the minimum step-size that theAdamsBashforthMoultonIntegrator
numerical integrator can take.maximumStepSize
TimeType
that defines the maximum step-size that theAdamsBashforthMoultonIntegrator
numerical integrator can take.relativeErrorTolerance
TimeType
that defines the relative error tolerance for step size control of theAdamsBashforthMoultonIntegratorr
numerical integrator.absoluteErrorTolerance
TimeType
that defines the absolute error tolerance for step size control of theAdamsBashforthMoultonIntegrator
numerical integrator.minimumOrder
The minimum order of the integrator, the default value is 6. It must be a
int
variable-type.maximumOrder
The maximum order of the integrator, the default value is 11. It must be a
int
variable-type.
Note
Aside from the arguments listed in this page, the IntegratorSettings
class and derived classes described here offer a number of optional arguments. The reader is advised to examine the Doxygen documentation included in the code for further details.
Warning
Make sure that a compatible integratorType
is selected, otherwise a runtime exception will be thrown.