Creating DynamicObject Basilisk Modules

Basilisk modules that inherit from the class Module: dynamicObject are still regular Basilisk modules that have the typical SelfInit(), Reset() and UpdateState() methods. However, they also contain a state engine called dynManager of the class DynParamManager, as well as an integrator pointer called integrator of class StateVecIntegrator. Module: spacecraft is an example of a Basilisk module that is also inheriting from the DynamicObject class.

In the spacecraft UpdateState() method the DynamicObject::integrateState() method is called. This call integrates all the registered spacecraft states, as well as all the connect state and dynamic effectors, to the next time step using the connected integrator type. See scenarioIntegrators for an example how how to set the integrator on a dynamic object.

Note

Integrators connected to DynamicObject instances don’t have to be the same. It is possible to use an RK2 integrator on one spacecraft and the RK4 integrator on another.

The initializeDynamics() virtual method must be defined in the DynamicObject subclass. It typically performs the required setup steps, including registering the ODE states that are to be integrated.

The DynamicObject class contains two virtual methods preIntegration() and postIntegration(). The DynamicObject subclass must define what steps are to be completed before the integration step, and what post-integrations must be completed. For example, with Module: spacecraft the pre-integration process determines the current time step to be integrated and stores some values used. In the post-integration step the MRP spacecraft attitude states are checked to not have a norm larger than 1 and the conservative DV component is determined.

Basilisk modules that are a subclass of DynamicObject are not restricted to mechanical integration scenarios as with the spacecraft example. See the discussion in Advanced: Using DynamicObject Basilisk Modules on how multiple Basilisk modules that inherit from the DynamicObject class can be linked. If linked, then the associated module ordinate differential equations (ODEs) are integrated simultaneously.