Module: facetDragDynamicEffector

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-accellerated drag models. For more information see the PDF Description.


struct SpacecraftGeometryData

Public Members

std::vector<double> facetAreas
std::vector<double> facetCoeffs
std::vector<Eigen::Vector3d> facetNormals_B
std::vector<Eigen::Vector3d> facetLocations_B
class FacetDragDynamicEffector : public SysModel, public DynamicEffector

Public Functions

FacetDragDynamicEffector()
~FacetDragDynamicEffector()

The destructor.

void linkInStates(DynParamManager &states)

This method is used to link the dragEffector to the hub attitude and velocity, which are required for calculating drag forces and torques.

Return

void

Parameters
  • currentTime: The current simulation time converted to a double

void computeForceTorque(double integTime)

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 SelfInit()

This method currently does very little.

Return

void

void CrossInit()

This method is used to connect the input density message to the drag effector. It sets the message ID based on what it finds for the input string.

Return

void

void Reset(uint64_t CurrentSimNanos)
void UpdateState(uint64_t CurrentSimNanos)

This method is called to update the local atmospheric conditions at each timestep. Naturally, this means that conditions are held piecewise-constant over an integration step.

Return

void

Parameters
  • CurrentSimNanos: The current simulation time in nanoseconds

void WriteOutputMessages(uint64_t CurrentClock)

The DragEffector does not write output messages to the rest of the sim.

Return

void

bool ReadInputs()

This method is used to read the incoming density message and update the internal density/ atmospheric data.

Return

void

void setDensityMessage(std::string newDensMessage)

This method is used to set the input density message produced by some atmospheric model.

Return

void

void addFacet(double area, double dragCoeff, Eigen::Vector3d B_normal_hat, Eigen::Vector3d B_location)

Public Members

uint64_t numFacets
std::string atmoDensInMsgName

message used to read command inputs

std::string navAttInMsgName

message used to read command inputs

StateData *hubSigma

Hub/Inertial attitude represented by MRP

StateData *hubVelocity

m/s Hub inertial velocity vector

Eigen::Vector3d v_B

m/s local variable to hold the inertial velocity

Eigen::Vector3d v_hat_B
BSKLogger bskLogger

BSK Logging

Private Functions

void plateDrag()

This method WILL implement a more complex flat-plate aerodynamics model with attitude dependence and lift forces.

void updateDragDir()

This method updates the internal drag direction based on the spacecraft velocity vector.

Private Members

int64_t densInMsgId

Message ID for incoming data

AtmoPropsSimMsg atmoInData
SpacecraftGeometryData scGeometry

Struct to hold spacecraft facet data