12#ifndef WSFORBITALDYNAMICS_HPP
13#define WSFORBITALDYNAMICS_HPP
18#include "UtCloneablePtr.hpp"
19#include "UtECI_Conversion.hpp"
22#include "UtLLAPos.hpp"
45 UtVec3d
ComputeAcceleration(
double aMass,
const UtCalendar& aTime,
const UtVec3d& aPosition,
const UtVec3d& aVelocity)
const;
49 const UtCalendar& aInitialTime);
61 void AddTerm(std::unique_ptr<WsfOrbitalDynamicsTerm> aTermPtr);
67 std::vector<T*> terms;
68 for (
const auto& term : mTerms)
70 T* termT =
dynamic_cast<T*
>(term.get());
73 terms.push_back(termT);
87 mutable UtECI_Conversion
mConverter{UtCalendar(), ut::EarthEGM96()};
94 std::vector<UtCloneablePtr<WsfOrbitalDynamicsTerm>> mTerms{};
95 const WsfIntegratingPropagator* mPropagatorPtr{
nullptr};
99 double mDeltaUT1{0.0};
Definition WsfIntegratingPropagator.hpp:37
WsfObject()
This is the constructor for the WsfObject class.
Definition WsfObject.cpp:88
Definition WsfOrbitalDynamicsTerm.hpp:32
bool Initialize(const WsfSimulation *aSimulationPtr, const WsfIntegratingPropagator &aPropagator, const UtCalendar &aInitialTime)
Definition WsfOrbitalDynamics.cpp:96
~WsfOrbitalDynamics() override=default
UtLLAPos GetLLA_FromWCS(const UtVec3d &aPositionWCS) const
Definition WsfOrbitalDynamics.cpp:127
const WsfIntegratingPropagator * GetPropagator() const
Definition WsfOrbitalDynamics.hpp:51
UtECI_Conversion mConverter
Definition WsfOrbitalDynamics.hpp:87
const WsfSimulation * GetSimulation() const
Definition WsfOrbitalDynamics.hpp:84
bool mEpochSet
Definition WsfOrbitalDynamics.hpp:89
std::vector< T * > GetTerms() const
Definition WsfOrbitalDynamics.hpp:65
WsfOrbitalDynamics(const WsfScenario &aScenario)
Definition WsfOrbitalDynamics.cpp:24
UtVec3d GetWCS_PositionFromECI(const UtVec3d &aPositionECI) const
Definition WsfOrbitalDynamics.cpp:112
UtVec3d GetECI_AccelerationFromWCS(const UtVec3d &aAccelerationWCS) const
Definition WsfOrbitalDynamics.cpp:117
size_t GetNumTerms() const
Definition WsfOrbitalDynamics.hpp:59
const WsfScenario & GetScenario() const
Definition WsfOrbitalDynamics.hpp:83
void AddTerm(std::unique_ptr< WsfOrbitalDynamicsTerm > aTermPtr)
Add a term to this set of dynamics.
Definition WsfOrbitalDynamics.cpp:151
WsfOrbitalDynamics & operator=(const WsfOrbitalDynamics &aOther)=delete
bool ProcessInput(UtInput &aInput) override
Definition WsfOrbitalDynamics.cpp:42
void GetTimeConstants(UtCalendar &aTime) const
Definition WsfOrbitalDynamics.cpp:184
WsfOrbitalDynamics * Clone() const override
Definition WsfOrbitalDynamics.cpp:37
const WsfOrbitalDynamicsTerm * GetTerm(size_t aIndex) const
Definition WsfOrbitalDynamics.cpp:160
UtVec3d ComputeAcceleration(double aMass, const UtCalendar &aTime, const UtVec3d &aPosition, const UtVec3d &aVelocity) const
Definition WsfOrbitalDynamics.cpp:83
bool RemoveTerm(size_t aIndex)
Definition WsfOrbitalDynamics.cpp:174
const char * GetScriptClassName() const override
Definition WsfOrbitalDynamics.hpp:43
void UpdateConverterTime(const UtCalendar &aTime) const
Definition WsfOrbitalDynamics.cpp:136
UtVec3d GetWCS_VelocityFromECI(const UtVec3d &aPositionECI, const UtVec3d &aVelocityECI) const
Definition WsfOrbitalDynamics.cpp:122
UtCalendar mInitialEpoch
Definition WsfOrbitalDynamics.hpp:88
Contains the data required to create a simulation, and acts as the entry point for input file process...
Definition WsfScenario.hpp:111
The main controller for a simulation.
Definition WsfSimulation.hpp:109