12#ifndef WSFMOONMONOPOLETERM_HPP
13#define WSFMOONMONOPOLETERM_HPP
20#include "UtCloneablePtr.hpp"
22#include "UtSpline.hpp"
40 const UtCalendar& aTime,
41 const UtVec3d& aPosition,
42 const UtVec3d& aVelocity)
const override;
54 constexpr static const char*
cTYPE{
"moon_monopole"};
65 class MoonPositionHelper
70 double GetInterval()
const {
return mInterval; }
71 void SetInterval(
double aInterval) { mInterval = aInterval; }
73 const UtCalendar& GetBaseTime()
const {
return mBaseTime; }
74 void SetBaseTime(
const UtCalendar& aBaseTime) { mBaseTime = aBaseTime; }
76 UtVec3d GetPosition(
const UtCalendar& aTime)
const;
79 void ComputeSpline()
const;
80 double RedoSpline(
const UtCalendar& aTime)
const;
82 double mInterval{600.0};
83 mutable UtCalendar mBaseTime{};
84 mutable UtVec3d mF0{};
85 mutable UtVec3d mF1{};
86 mutable UtVec3d mF2{};
87 mutable UtVec3d mF3{};
88 mutable UtInterpolatingPolynomial<UtVec3d, 3> mSpline{{0.0, 0.0, 0.0, 0.0}, 0.0};
91 double mGravitationalParameter{UtMoon::cGRAVITATIONAL_PARAMETER};
92 DataSource mDataSource{cDEFAULT};
93 MoonPositionHelper mMoonPosition{};
94 std::string mDataFileName{};
95 ut::CloneablePtr<WsfDE_FileHandle> mDataFile{
nullptr};
bool ProcessInput(UtInput &aInput) override
Definition WsfMoonMonopoleTerm.cpp:22
const char * GetScriptClassName() const override
Definition WsfMoonMonopoleTerm.hpp:35
void SetInterpolationInterval(double aInterval)
Definition WsfMoonMonopoleTerm.hpp:52
double GetInterpolationInterval() const
Definition WsfMoonMonopoleTerm.hpp:51
WsfMoonMonopoleTerm * Clone() const override
Definition WsfMoonMonopoleTerm.hpp:33
static constexpr const char * cTYPE
Definition WsfMoonMonopoleTerm.hpp:54
WsfMoonMonopoleTerm()=default
bool Initialize(const WsfOrbitalDynamics &aDynamics) override
Definition WsfMoonMonopoleTerm.cpp:108
~WsfMoonMonopoleTerm() override=default
WsfMoonMonopoleTerm(const WsfMoonMonopoleTerm &aOther)=default
double GetGravitationalParameter() const
Definition WsfMoonMonopoleTerm.hpp:48
UtVec3d GetMoonPositionECI(const UtCalendar &aTime) const
Definition WsfMoonMonopoleTerm.cpp:117
void SetGravitationalParameter(double aMu)
Definition WsfMoonMonopoleTerm.hpp:49
std::string GetTermType() const override
Return a string indicating the type of term.
Definition WsfMoonMonopoleTerm.hpp:44
UtVec3d ComputeAcceleration(double aMass, const UtCalendar &aTime, const UtVec3d &aPosition, const UtVec3d &aVelocity) const override
Definition WsfMoonMonopoleTerm.cpp:65
WsfOrbitalDynamicsTerm()
Definition WsfOrbitalDynamicsTerm.hpp:34
Definition WsfOrbitalDynamics.hpp:32