🛰️航天仿真算法库 SpaceAST 0.0.1
载入中...
搜索中...
未找到
HPOPForceModel.hpp
浏览该文件的文档.
1
20
21#pragma once
22
23#include "AstGlobal.h"
24#include "AstCore/CelestialBody.hpp"
25#include "AstUtil/Constants.h"
26#include <vector>
27
28AST_NAMESPACE_BEGIN
29
36enum class ESolidTideType{
37 eFull,
38 ePermanentOnly,
39 eNone,
40};
41
42enum class EAtmDensityModel
43{
44 e1976Standard,
45 eJacchiaRoberts,
46 eNRLMSISE2000,
47 eMSISE1990,
48 eMSIS1986,
49};
50
51enum class EGeoMagneticFluxSource
52{
53 eKp,
54 eAp,
55};
56
57enum class EGeoMagneticFluxUpdateMethod
58{
59 eDaily,
60 e3Hourly,
61 e3HourlyInterp,
62 e3HourlyCubicSpline,
63};
64
65enum class ESunPosition
66{
67 eTrue,
68 eApparentSunToTrueCB,
69 eApparent,
70};
71
72enum class EShadowModel
73{
74 eNone,
75 eCylindrical,
76 eDualCone,
77};
78
81{
82public:
83 struct Gravity
84 {
85 std::string model_{};
86 int maxDegree_{2};
87 int maxOrder_{0};
88 // @warning 下面这些参数的相关计算逻辑尚未实现
89 bool useGravSecularVariations_{false};
90 ESolidTideType solidTideType_
91 {ESolidTideType::eNone};
92 bool includeTimeDependSolidTides_{false};
93 double minAmplitudeSolidTides_{0.0};
94 bool truncateSolidTides_{false};
95 bool useSolidTides_{false};
96 int maxDegreeOceanTides_{2};
97 int maxOrderOceanTides_{0};
98 double minAmplitudeOceanTides_{0.0};
99 };
100 struct Drag
101 {
102 // @warning 下面这些参数的相关计算逻辑尚未实现
103 EAtmDensityModel atmDensityModel_
104 {EAtmDensityModel::e1976Standard};
105 double atmBlendingRange_{0.0};
106 bool useFluxApFile_{false};
107 std::string fluxApFile_{};
108 EGeoMagneticFluxSource geoMagneticFluxSource_
109 {EGeoMagneticFluxSource::eKp};
110 EGeoMagneticFluxUpdateMethod geoMagneticFluxUpdateMethod_
111 {EGeoMagneticFluxUpdateMethod::eDaily};
112 double geoMagneticFluxInterpSubSamplingRatio_{1.0};
113 double dragCoefficient_{0.0};
114 double areaMassRatio_{0.0};
115 // DragCorrectionType
116 double f10p7Average_{0.0};
117 double f10p7Daily_{0.0};
118 double kp_{0.0};
119 bool useApproxAltForDrag_{false};
120 bool useApparentSunForDrag_{false};
121 // DensityType
122 };
123 struct SRP
124 {
125 // @warning 下面这些参数的相关计算逻辑尚未实现
126 double coefficient_{0.0};
127 double areaMassRatio_{0.0};
128 // ReflectionModel
129 // CorrectionType
130 ESunPosition sunPosition_
131 {ESunPosition::eTrue};
132 bool detectShadowBoundaries_{false};
133 EShadowModel shadowModel_
134 {EShadowModel::eNone};
135 std::vector<HCelestialBody> eclipsingBodies_;
136 double atmAltForEclipse_{0.0};
137 };
139 {
140 // @warning 下面这些参数的相关计算逻辑尚未实现
142 };
143 using ThirdBodyList = std::vector<ThirdBody>;
144public:
145 bool useDrag_{false};
146 bool useSRP_{false};
147 bool useMoonGravity_{false};
151 double moonGravity_{kMoonGrav};
152 ThirdBodyList thirdBodies_;
153};
154
155
158AST_NAMESPACE_END
高精度轨道预报力模型
定义 HPOPForceModel.hpp:81
Drag drag_
阻力模型
定义 HPOPForceModel.hpp:149
ThirdBodyList thirdBodies_
三体引力
定义 HPOPForceModel.hpp:152
Gravity gravity_
中心天体重力场
定义 HPOPForceModel.hpp:148
SRP srp_
太阳辐射压模型
定义 HPOPForceModel.hpp:150
constexpr double kMoonGrav
月球引力常数 [m^3/s^2]. (GLGM2)
定义 Constants.h:89
定义 HPOPForceModel.hpp:101
定义 HPOPForceModel.hpp:84
定义 HPOPForceModel.hpp:124
std::vector< HCelestialBody > eclipsingBodies_
遮挡天体列表
定义 HPOPForceModel.hpp:135
定义 HPOPForceModel.hpp:139
HCelestialBody body_
天体
定义 HPOPForceModel.hpp:141