WSF
WsfNORAD_OrbitalPropagator.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 2003-2015 The Boeing 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 WSFNORAD_ORBITALPROPAGATOR_HPP
13#define WSFNORAD_ORBITALPROPAGATOR_HPP
14
15#include "wsf_space_export.h"
16
17class UtCalendar;
18#include "UtCloneablePtr.hpp"
19class UtInput;
20#include "UtOrbitalState.hpp"
21#include "WsfNORAD_Util.hpp"
24class WsfScenario;
25
35{
36public:
40 ~WsfNORAD_OrbitalPropagator() override = default;
41
42 WsfNORAD_OrbitalPropagator* Clone() const override { return new WsfNORAD_OrbitalPropagator(*this); }
43
44 static WsfOrbitalPropagatorTypes::FactoryPtr ObjectFactory(WsfScenario& aScenario);
45
47
48 bool Initialize(const UtCalendar& aInitialTime) override;
49 using WsfNonClassicalOrbitalPropagator::Initialize;
51
53 {
54 cSGP = 0,
55 cSGP4 = 1,
56 cSGP8 = 2,
57 cSDP4 = 3,
59 }; // Ephemeris type
60
63 int GetEphemerisType() const { return mEphem; }
64
65 double GetTimeToNorthernIntersection(double aTargetRAAN, double aTargetInclination, unsigned aOrbitNum = 0) const override;
66 double GetTimeToSouthernIntersection(double aTargetRAAN, double aTargetInclination, unsigned aOrbitNum = 0) const override;
67
68 bool SetInitialOrbitalState(const ut::OrbitalState& aState) override;
69
70protected:
71 void Propagate(const UtCalendar& aTime) override;
72
73 void UpdateOrbitalState() override;
74
75 bool HyperbolicPropagationAllowed() const override { return false; }
76
77 void PostPropagate() override;
78
79private:
80 int SelectEphemeris();
81
82 void SGP_init();
83 void SGP(double);
84
85 void SGP4_init();
86 void SGP4(double tsince);
87
88 void SGP8_init();
89 void SGP8(double tsince);
90
91 void SDP4_init();
92 void SDP4(double tsince);
93
94 void SDP8_init();
95 void SDP8(double tsince);
96
97 static const int DEEP_ARG_T_PARAMS = 87;
98 static const int N_SAT_PARAMS = (11 + DEEP_ARG_T_PARAMS);
99
100 ut::OrbitalState mPropagatedOrbitalState;
101
102 // data elements
103 std::unique_ptr<WsfNORAD_Util::tle_t> tle{nullptr}; // Kept the original implementation's name (Project Pluto).
104
105 bool mSimpleFlag{false}; // Flag to determine whether to perform simplified calculations (false).
106 int mEphem{1};
107 double params[N_SAT_PARAMS]; // for library propagators
108 double mPos[3]{0.0, 0.0, 0.0}; // ECI coordinates, km
109 double mVel[3]{0.0, 0.0, 0.0}; // ECI coordinates, km/min
110};
111#endif
WsfNORAD_OrbitalPropagator()
Definition WsfNORAD_OrbitalPropagator.cpp:25
int GetEphemerisType() const
Definition WsfNORAD_OrbitalPropagator.hpp:63
EphemerisType
Definition WsfNORAD_OrbitalPropagator.hpp:53
@ cSDP8
Definition WsfNORAD_OrbitalPropagator.hpp:58
@ cSGP4
Definition WsfNORAD_OrbitalPropagator.hpp:55
@ cSGP
Definition WsfNORAD_OrbitalPropagator.hpp:54
@ cSGP8
Definition WsfNORAD_OrbitalPropagator.hpp:56
@ cSDP4
Definition WsfNORAD_OrbitalPropagator.hpp:57
~WsfNORAD_OrbitalPropagator() override=default
WsfNORAD_OrbitalPropagator & operator=(const WsfNORAD_OrbitalPropagator &)=delete
bool HyperbolicPropagationAllowed() const override
Definition WsfNORAD_OrbitalPropagator.hpp:75
WsfNORAD_OrbitalPropagator * Clone() const override
Definition WsfNORAD_OrbitalPropagator.hpp:42
WsfNonClassicalOrbitalPropagator(std::unique_ptr< ut::OrbitalState > aInitialOrbitalStatePtr)
Definition WsfNonClassicalOrbitalPropagator.cpp:19
std::function< std::unique_ptr< UtOrbitalPropagatorBase >(const std::string &)> FactoryPtr
Definition WsfOrbitalPropagatorTypes.hpp:35
Contains the data required to create a simulation, and acts as the entry point for input file process...
Definition WsfScenario.hpp:111
Copyrights Multiple, All Rights Reserved