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:
TimeTypeTemplate argument used to set the precision of the time, in general
doubleis used. For some application where a high precision is required,tudat::Timecan be used and cast tolong double.integratorTypeAvailableIntegratorswhich defines the fixed step-size integrator type to be used. Currently the only options available areeulerandrungeKutta4.simulationStartEpochTimeTypethat defines the simulation’s start epoch.fixedStepSizeTimeTypethat defines the fixed step-size to be used either by theeuleror therungeKutta4numerical 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:
TimeTypeTemplate argument used to set the precision of the time, in general
doubleis used. For some application where a high precision is required this can be changed to e.g.long double.
simulationStartEpochTimeTypethat defines the simulation’s initial time. It must be adoublevariable-type.initialTimeStepTimeTypethat defines the initial step-size to be used either by therungeKuttaVariableStepSizenumerical integrator. It must be adoublevariable-type.coefficientSetRungeKuttaCoefficients::CoefficientSetsthat defines the coefficient set to be used by therungeKuttaVariableStepSizenumerical integrator. The list of available coefficient sets is given in Integrators.minimumStepSizeTimeTypethat defines the minimum step-size that therungeKuttaVariableStepSizenumerical integrator can take.maximumStepSizeTimeTypethat defines the maximum step-size that therungeKuttaVariableStepSizenumerical integrator can take.relativeErrorToleranceTimeTypethat defines the relative error tolerance for step size control of therungeKuttaVariableStepSizenumerical integrator.absoluteErrorToleranceTimeTypethat defines the absolute error tolerance for step size control of therungeKuttaVariableStepSizenumerical integrator.saveFrequencyFrequency 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.assessPropagationTerminationConditionDuringIntegrationSubstepsWhether 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.safetyFactorForNextStepSizeSafety factor for step size control. The default value is 0.8.
maximumFactorIncreaseForNextStepSizeMaximum increase factor in time step in subsequent iterations. The default value is 4.0.
minimumFactorDecreaseForNextStepSizeMinimum 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:
StateTypeTemplate argument used to set the format of the state, in general
Eigen::VectorXdis 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 doubleis used instead ofdouble.
relativeErrorToleranceStateTypethat defines the relative error tolerance for each state entry, for step size control of therungeKuttaVariableStepSizenumerical integrator.absoluteErrorToleranceStateTypethat defines the absolute error tolerance for each state entry, for step size control of therungeKuttaVariableStepSizenumerical 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:
TimeTypeTemplate argument used to set the precision of the time, in general
doubleis used. For some application where a high precision is required this can be changed to e.g.long double.
initialTimeTimeTypethat defines the simulation’s initial time. It must be adoublevariable-type.initialTimeStepTimeTypethat defines the initial step-size to be used either by theBulirschStoerIntegratornumerical integrator. It must be adoublevariable-type.extrapolationSequenceExtrapolationMethodStepSequencesthat defines the extrapolation sequence that is used for theBulirschStoerIntegratornumerical integrator.maximumNumberOfStepsNumber of integrations that are used for a single extrapolation. It must be a
intvariable-type.minimumStepSizeTimeTypethat defines the minimum step-size that theBulirschStoerIntegratornumerical integrator can take.maximumStepSizeTimeTypethat defines the maximum step-size that theBulirschStoerIntegratornumerical integrator can take.relativeErrorToleranceTimeTypethat defines the relative error tolerance for step size control of theBulirschStoerIntegratornumerical integrator.absoluteErrorToleranceTimeTypethat defines the absolute error tolerance for step size control of theBulirschStoerIntegratornumerical 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:
TimeTypeTemplate argument used to set the precision of the time, in general
doubleis used. For some application where a high precision is required this can be changed to e.g.long double.
initialTimeTimeTypethat defines the simulation’s initial time. It must be adoublevariable-type.initialTimeStepTimeTypethat defines the initial step-size to be used either by theAdamsBashforthMoultonIntegratornumerical integrator. It must be adoublevariable-type.minimumStepSizeTimeTypethat defines the minimum step-size that theAdamsBashforthMoultonIntegratornumerical integrator can take.maximumStepSizeTimeTypethat defines the maximum step-size that theAdamsBashforthMoultonIntegratornumerical integrator can take.relativeErrorToleranceTimeTypethat defines the relative error tolerance for step size control of theAdamsBashforthMoultonIntegratorrnumerical integrator.absoluteErrorToleranceTimeTypethat defines the absolute error tolerance for step size control of theAdamsBashforthMoultonIntegratornumerical integrator.minimumOrderThe minimum order of the integrator, the default value is 6. It must be a
intvariable-type.maximumOrderThe maximum order of the integrator, the default value is 11. It must be a
intvariable-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.