Module: atmosphereBase
Executive Summary
General atmosphere base class used to calculate neutral density/temperature using arbitrary models
The Atmosphere class is used to calculate the neutral density and temperature above a body using arbitrary models.
Each atmosphere is attached to a specific planet, but provides support for
multiple spacecraft through addSpacecraftToModel().
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 |
|---|---|---|
scStateInMsgs |
vector of spacecraft state input messages |
|
envOutMsgs |
vector of atmospheric density output messages |
|
planetPosInMsg |
(optional) planet state input message. If not provided the planet state is zero information. |
|
epochInMsg |
(optional) epoch date/time input message |
-
class AtmosphereBase : public SysModel
- #include <atmosphereBase.h>
atmospheric density base class
Public Functions
-
AtmosphereBase()
This method initializes some basic parameters for the module.
-
~AtmosphereBase()
Destructor.
-
void Reset(uint64_t CurrentSimNanos)
This method is used to reset the module.
-
void addSpacecraftToModel(Message<SCStatesMsgPayload> *tmpScMsg)
Adds the spacecraft message to a vector of sc messages and automatically creates the corresponding output message.
- Parameters:
tmpScMsg – A spacecraft state message name.
-
void UpdateState(uint64_t CurrentSimNanos)
Computes the current local magnetic field for each spacecraft and writes their respective messages.
- Parameters:
CurrentSimNanos – The current simulation time in nanoseconds
Public Members
-
std::vector<ReadFunctor<SCStatesMsgPayload>> scStateInMsgs
Vector of the spacecraft position/velocity input message.
-
std::vector<Message<AtmoPropsMsgPayload>*> envOutMsgs
Vector of message names to be written out by the environment.
-
ReadFunctor<SpicePlanetStateMsgPayload> planetPosInMsg
Message name for the planet’s SPICE position message.
-
ReadFunctor<EpochMsgPayload> epochInMsg
(optional) epoch date/time input message
-
double envMinReach
[m] Minimum planet-relative position needed for the environment to work, default is off (neg. value)
-
double envMaxReach
[m] Maximum distance at which the environment will be calculated, default is off (neg. value)
-
double planetRadius
[m] Radius of the planet
-
BSKLogger bskLogger
— BSK Logging
Protected Functions
-
void writeMessages(uint64_t CurrentClock)
This method is used to write the output magnetic field messages whose names are established in AddSpacecraftToModel.
- Parameters:
CurrentClock – The current time used for time-stamping the message
-
bool readMessages()
This method is used to read the incoming command message and set the associated spacecraft positions for computing the atmosphere.
-
void updateLocalAtmosphere(double currentTime)
This method is used to update the local magnetic field based on each spacecraft’s position.
-
void updateRelativePos(SpicePlanetStateMsgPayload *planetState, SCStatesMsgPayload *scState)
This method is used to determine the spacecraft position vector relative to the planet.
- Parameters:
planetState – A space planetstate message struct.
scState – A spacecraft states message struct.
-
virtual void evaluateAtmosphereModel(AtmoPropsMsgPayload *msg, double currentTime) = 0
class method
-
virtual void customReset(uint64_t CurrentClock)
Custom Reset() method. This allows a child class to add additional functionality to the Reset() method
-
virtual void customWriteMessages(uint64_t CurrentClock)
Custom output message writing method. This allows a child class to add additional functionality.
-
virtual bool customReadMessages()
Custom output input reading method. This allows a child class to add additional functionality.
-
virtual void customSetEpochFromVariable()
Custom customSetEpochFromVariable() method. This allows a child class to specify how the module epoch information is set by a module variable.
Protected Attributes
-
double orbitRadius
[m] sc orbit radius about planet
-
double orbitAltitude
[m] sc altitude above planetRadius
-
std::vector<AtmoPropsMsgPayload> envOutBuffer
— Message buffer for magnetic field messages
-
std::vector<SCStatesMsgPayload> scStates
vector of the spacecraft state messages
-
SpicePlanetStateMsgPayload planetState
planet state message
-
struct tm epochDateTime
time/date structure containing the epoch information using a Gregorian calendar
-
AtmosphereBase()