dragDynamicEffector#
Executive Summary#
Drag dynamics class used to compute drag effects on spacecraft bodies. This class is used to implement drag dynamic effects on spacecraft using a variety of simple or complex models, which will include cannonball (attitude-independent) drag, single flat-plate drag, faceted drag models, and an interface to full-CAD GPU-accelerated drag models.
Message Connection Descriptions#
The following table lists all the module input and output messages. The module msg connection is set by the user from python. The msg type contains a link to the message structure definition, while the description provides information on what this message is used for.
Msg Variable Name |
Msg Type |
Description |
---|---|---|
atmoDensInMsg |
AtmoPropsMsgPayload |
atmospheric density input message |
Class DragDynamicEffector#
-
class DragDynamicEffector : public SysModel, public DynamicEffector#
drag dynamic effector
Public Functions
-
void linkInStates(DynParamManager &states) override#
This method is used to link the dragEffector to the hub attitude and velocity, which are required for calculating drag forces and torques.
- Parameters:
states – simulation states
- Returns:
void
-
void computeForceTorque(double integTime, double timeStep) override#
This method computes the body forces and torques for the dragEffector in a simulation loop, selecting the model type based on the settable attribute “modelType.”
-
void reset(uint64_t currentSimNanos) override#
This method is used to reset the module.
- Returns:
void
-
void updateState(uint64_t currentSimNanos) override#
This method is called to update the local atmospheric conditions at each timestep. Naturally, this means that atmospheric conditions are held piecewise-constant over an integration step.
- Parameters:
currentSimNanos – The current simulation time in nanoseconds
- Returns:
void
-
void readMessages()#
This method is used to read the incoming density message and update the internal density/ atmospheric data.
- Returns:
void
-
void cannonballDrag()#
This method implements a simple “cannnonball” (attitude-independent) drag model.
-
void updateDragDir()#
This method updates the internal drag direction based on the spacecraft velocity vector.
Public Members
-
DragBaseData coreParams = {}#
— Struct used to hold drag parameters
-
ReadFunctor<AtmoPropsMsgPayload> atmoDensInMsg#
— message used to read density inputs
-
std::string modelType = "cannonball"#
— String used to set the type of model used to compute drag
-
StateData *hubSigma#
— Hub/Inertial attitude represented by MRP
-
StateData *hubVelocity#
m/s Hub inertial velocity vector
-
Eigen::Vector3d v_B = Eigen::Vector3d::Zero()#
m/s local variable to hold the inertial velocity
-
Eigen::Vector3d v_hat_B = Eigen::Vector3d::Zero()#
— Drag force direction in the inertial frame
-
void linkInStates(DynParamManager &states) override#