Module: gravityEffector¶
-
class
SphericalHarmonics
¶ Public Functions
-
SphericalHarmonics
()¶
-
~SphericalHarmonics
()¶
-
bool
initializeParameters
()¶
-
double
getK
(const unsigned int degree)¶ [-] configure all spher-harm based on inputs
-
Eigen::Vector3d
computeField
(const Eigen::Vector3d pos_Pfix, unsigned int degree, bool include_zero_degree)¶ ——————————Main Interface————————-///
Use to compute the field in position pos, given in a body frame.
- Parameters
[in] pos
: Position in which the field is to be computed.[in] degree
: used to compute the field.[out] acc
: Vector including the computed field.[in] include_zero_degree
: Boolean that determines whether the zero-degree term is included.
-
bool
harmReady
()¶
Public Members
-
double
maxDeg
¶
-
double
radEquator
¶ [-] Maximum degree of the spherical harmonics
-
double
muBody
¶ [-] Reference radius for the planet
-
std::vector<std::vector<double>>
cBar
¶ [-] Gravitation parameter for the planet
-
std::vector<std::vector<double>>
sBar
¶ [-] C coefficient set
-
std::vector<std::vector<double>>
aBar
¶ [-] S coefficient set
-
std::vector<std::vector<double>>
n1
¶ [-] Normalized ‘derived’ Assoc. Legendre
-
std::vector<std::vector<double>>
n2
¶ [-] What am I
-
std::vector<std::vector<double>>
nQuot1
¶ [-] What am I
-
std::vector<std::vector<double>>
nQuot2
¶ [-] What am I
-
-
class
GravBodyData
¶ - #include <gravityEffector.h>
Container for gravitational body data.
This class is designed to hold all of the information for a gravity body. The nominal use-case has it initialized at the python level and attached to dynamics using the AddGravityBody method.
The module PDF Description contains further information on this module’s function, how to run it, as well as testing.
Public Functions
-
GravBodyData
()¶ Set parameters for a gravity body.
-
~GravBodyData
()¶ Destructor.
-
void
initBody
(int64_t moduleID)¶ Method to initialize the gravity body.
-
void
loadEphemeris
(int64_t moduleID)¶ Command to load the ephemeris data.
Public Members
-
bool
isCentralBody
¶ Flag indicating that object is center.
-
bool
isDisplayBody
¶ Flag indicating that body is display.
-
bool
useSphericalHarmParams
¶ Flag indicating to use spherical harmonics perturbations.
-
double
mu
¶ [m3/s^2] central body gravitational param
-
double
ephemTime
¶ [s] Ephemeris time for the body in question
-
double
ephIntTime
¶ [s] Integration time associated with the ephem data
-
double
radEquator
¶ [m] Equatorial radius for the body
-
SpicePlanetStateSimMsg
localPlanet
¶ [-] Class storage of ephemeris info from scheduled portion
-
SingleMessageHeader
localHeader
¶
-
std::string
bodyInMsgName
¶ [-] Header information for ephemeris storage
Gravitational body name
-
std::string
outputMsgName
¶ Ephemeris information relative to display frame.
-
std::string
planetEphemName
¶ Ephemeris name for the planet.
-
int64_t
outputMsgID
¶ ID for output message data.
-
int64_t
bodyMsgID
¶ ID for ephemeris data message.
-
SphericalHarmonics
spherHarm
¶ Object that computes the spherical harmonics gravity field.
-
-
class
GravityEffector
: public SysModel¶ Public Functions
-
GravityEffector
()¶
-
~GravityEffector
()¶
-
void
SelfInit
()¶
-
void
CrossInit
()¶
-
void
UpdateState
(uint64_t CurrentSimNanos)¶
-
void
linkInStates
(DynParamManager &statesIn)¶
-
void
registerProperties
(DynParamManager &statesIn)¶
-
void
computeGravityField
(Eigen::Vector3d r_cF_N, Eigen::Vector3d rDot_cF_N)¶ Calculate gravitational acceleration of s/c wrt inertial (no central body) or wrt central body @params r_cF_N is position of center of mass of s/c wrt frame it is stored/integrated in in spacecraft @params rDot_cF_N is the derivative of above
-
void
updateInertialPosAndVel
(Eigen::Vector3d r_BF_N, Eigen::Vector3d rDot_BF_N)¶ Calculate gravitational acceleration of s/c wrt inertial (no central body) or wrt central body @params r_BF_N is position of body frame of s/c wrt frame it is stored/integrated in in spacecraft @params rDot_BF_N is the derivative of above
-
void
updateEnergyContributions
(Eigen::Vector3d r_CN_N, double &orbPotEnergyContr)¶ Orbital Potential Energy Contributions
-
void
setGravBodies
(std::vector<GravBodyData*> gravBodies)¶
-
void
addGravBody
(GravBodyData *gravBody)¶
-
void
prependSpacecraftNameToStates
()¶
Public Members
-
std::string
vehicleGravityPropName
¶
-
std::string
systemTimeCorrPropName
¶ [-] Name of the vehicle mass state
-
std::vector<GravBodyData*>
gravBodies
¶ [-] Name of the correlation between times
-
GravBodyData *
centralBody
¶ [-] Vector of bodies we feel gravity from
Central body
-
std::string
inertialPositionPropName
¶
-
std::string
inertialVelocityPropName
¶ [-] Name of the inertial position property
-
std::string
nameOfSpacecraftAttachedTo
¶ [-] Name of the inertial velocity property
Private Functions
-
Eigen::Vector3d
getEulerSteppedGravBodyPosition
(GravBodyData *bodyData)¶ Calculate gravitational acceleration of s/c wrt inertial (no central body) or wrt central body @params r_cF_N is position of center of mass of s/c wrt frame it is stored/integrated in in spacecraft @params rDot_cF_N is the derivative of above
-
void
writeOutputMessages
(uint64_t currentSimNanos)¶
-