fuelTank#

Executive Summary#

This class is an instantiation of the stateEffector abstract class and implements an effector representing a fuel tank. This fuel tank has one state associated with it and is the mass of the fuel inside the tank. The module is a fuel tank effector attached to a rigid body hub and has the following functions:

  • Compute tank properties depending on the tank model being used

  • Provides its contributions to the mass properties of the spacecraft

  • Provides its contributions to the back-substitution matrices

  • Computes its derivative for its mass flow rate using the vector of attached thrusters

  • Provides its contributions to energy and momentum of the spacecraft

The module PDF Description contains further information on this module’s computations.

Message Connection Descriptions#

The following table lists all the module input and output messages. The module msg variable name 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.

Module I/O Messages#

Msg Variable Name

Msg Type

Description

fuelTankOutMsg

FuelTankMsgPayload

fuel tank output message name

User Guide#

The fuel tank effector module must be passed a tank model

fuelTankEffector = fuelTank.FuelTank()
tankModel = fuelTank.FuelTankModelConstantVolume()
fuelTankEffector.setTankModel(tankModel)

A thruster effector can be attached to a tank effector to simulate fuel mass depletion by thruster operation.

fuelTankEffector.addThrusterSet(thrustersEffector)

Class FuelTank#

class FuelTank : public StateEffector, public SysModel#

Fuel tank effector model class

Public Functions

void writeOutputMessages(uint64_t currentClock)#

Compute fuel tank mass properties and outputs them as a message.

Parameters:

currentClock – The current simulation time (used for time stamping)

Returns:

void

void updateState(uint64_t currentSimNanos) override#

Fuel tank writes out its messages

Parameters:

currentSimNanos – The current simulation time in nanoseconds

Returns:

void

void setTankModel(FuelTankModel *model)#

set fuel tank model

Parameters:

model – fuel tank model type

Returns:

void

void pushFuelSloshParticle(FuelSlosh *particle)#

— Attach fuel slosh particle

Attach a fuel slosh particle to the tank

void registerStates(DynParamManager &states) override#

— Register mass state with state manager

Register states. The fuel tank has one state associated with it: mass, and it also has the responsibility to call register states for the fuel slosh particles

void linkInStates(DynParamManager &states) override#

— Give the tank access to other states

Link states that the module accesses

void updateEffectorMassProps(double integTime) override#

— Add contribution mass props from the tank

Fuel tank add its contributions the mass of the vehicle.

void setNameOfMassState(const std::string nameOfMassState)#

— Setter for fuel tank mass state name

void addThrusterSet(ThrusterDynamicEffector *dynEff)#

— Add DynamicEffector thruster

void addThrusterSet(ThrusterStateEffector *stateEff)#

— Add StateEffector thruster

void updateContributions(double integTime, BackSubMatrices &backSubContr, Eigen::Vector3d sigma_BN, Eigen::Vector3d omega_BN_B, Eigen::Vector3d g_N) override#

— Back-sub contributions

Fuel tank adds its contributions to the matrices for the back-sub method.

void updateEnergyMomContributions(double integTime, Eigen::Vector3d &rotAngMomPntCContr_B, double &rotEnergyContr, Eigen::Vector3d omega_BN_B) override#

— Energy and momentum calculations

Fuel tank contributes to the energy and momentum calculations

void computeDerivatives(double integTime, Eigen::Vector3d rDDot_BN_N, Eigen::Vector3d omegaDot_BN_B, Eigen::Vector3d sigma_BN) override#

— Calculate stateEffector’s derivatives

Fuel tank computes its derivative

Public Members

std::string nameOfMassState = {}#

— name of mass state

std::vector<FuelSlosh*> fuelSloshParticles#

&#8212; vector of fuel slosh particles

std::vector<ThrusterDynamicEffector*> thrDynEffectors#

&#8212; Vector of dynamic effectors for thrusters

std::vector<ThrusterStateEffector*> thrStateEffectors#

&#8212; Vector of state effectors for thrusters

Eigen::Matrix3d dcm_TB#

&#8212; DCM from body frame to tank frame

Eigen::Vector3d r_TB_B#

[m] position of tank in B frame

bool updateOnly = true#

&#8212; Sets whether to use update only mass depletion

Message<FuelTankMsgPayload> fuelTankOutMsg = {}#

&#8212; fuel tank output message name

FuelTankMsgPayload fuelTankMassPropMsg = {}#

instance of messaging system message struct