WSF
WsfSunMonopoleTerm.hpp
Go to the documentation of this file.
1// ****************************************************************************
2// CUI
3//
4// The Advanced Framework for Simulation, Integration, and Modeling (AFSIM)
5//
6// Copyright 2020 Infoscitex, a DCS Company. All rights reserved.
7//
8// The use, dissemination or disclosure of data in this file is subject to
9// limitation or restriction. See accompanying README and LICENSE for details.
10// ****************************************************************************
11
12#ifndef WSFSUNMONOPOLETERM_HPP
13#define WSFSUNMONOPOLETERM_HPP
14
15#include "UtCloneablePtr.hpp"
17class UtInput;
18#include "UtSolarSystem.hpp"
19#include "UtSun.hpp"
20#include "WsfDE_FileHandle.hpp"
21
23{
24public:
26 WsfSunMonopoleTerm(const WsfSunMonopoleTerm& aOther) = default;
27 ~WsfSunMonopoleTerm() override = default;
28
29 WsfSunMonopoleTerm* Clone() const override { return new WsfSunMonopoleTerm{*this}; }
30
31 const char* GetScriptClassName() const override { return "WsfSunMonopoleTerm"; }
32
33 bool ProcessInput(UtInput& aInput) override;
34 bool Initialize(const WsfOrbitalDynamics& aDynamics) override;
35
36 UtVec3d ComputeAcceleration(double aMass,
37 const UtCalendar& aTime,
38 const UtVec3d& aPosition,
39 const UtVec3d& aVelocity) const override;
40
41 std::string GetTermType() const override { return cTYPE; }
42
43 double GetGravitationalParameter() const { return mGravitationalParameter; }
44 void SetGravitationalParameter(double aMu) { mGravitationalParameter = aMu; }
45
46 constexpr static const char* cTYPE{"sun_monopole"};
47
48 UtVec3d GetSunLocationECI(const UtCalendar& aEpoch) const;
49
50private:
51 enum DataSource
52 {
53 cDEFAULT,
54 cDE_FILE
55 };
56
57 double mGravitationalParameter{UtSun::cGRAVITATIONAL_PARAMETER};
58 UtCloneablePtr<UtSolarSystem::Body> mEarthPtr{nullptr};
59 DataSource mDataSource{cDEFAULT};
60 std::string mDataFileName{};
61 ut::CloneablePtr<WsfDE_FileHandle> mDataFile{nullptr};
62};
63
64#endif // WSFSUNMONOPOLETERM_HPP
WsfOrbitalDynamicsTerm()
Definition WsfOrbitalDynamicsTerm.hpp:34
Definition WsfOrbitalDynamics.hpp:32
bool ProcessInput(UtInput &aInput) override
Definition WsfSunMonopoleTerm.cpp:28
UtVec3d GetSunLocationECI(const UtCalendar &aEpoch) const
Definition WsfSunMonopoleTerm.cpp:97
UtVec3d ComputeAcceleration(double aMass, const UtCalendar &aTime, const UtVec3d &aPosition, const UtVec3d &aVelocity) const override
Definition WsfSunMonopoleTerm.cpp:73
double GetGravitationalParameter() const
Definition WsfSunMonopoleTerm.hpp:43
std::string GetTermType() const override
Return a string indicating the type of term.
Definition WsfSunMonopoleTerm.hpp:41
static constexpr const char * cTYPE
Definition WsfSunMonopoleTerm.hpp:46
const char * GetScriptClassName() const override
Definition WsfSunMonopoleTerm.hpp:31
void SetGravitationalParameter(double aMu)
Definition WsfSunMonopoleTerm.hpp:44
bool Initialize(const WsfOrbitalDynamics &aDynamics) override
Definition WsfSunMonopoleTerm.cpp:64
~WsfSunMonopoleTerm() override=default
WsfSunMonopoleTerm(const WsfSunMonopoleTerm &aOther)=default
WsfSunMonopoleTerm()
Definition WsfSunMonopoleTerm.cpp:22
WsfSunMonopoleTerm * Clone() const override
Definition WsfSunMonopoleTerm.hpp:29
Copyrights Multiple, All Rights Reserved