🛰️航天仿真算法库 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
28
AST_NAMESPACE_BEGIN
29
36
enum class
ESolidTideType{
37
eFull,
38
ePermanentOnly,
39
eNone,
40
};
41
42
enum class
EAtmDensityModel
43
{
44
e1976Standard,
45
eJacchiaRoberts,
46
eNRLMSISE2000,
47
eMSISE1990,
48
eMSIS1986,
49
};
50
51
enum class
EGeoMagneticFluxSource
52
{
53
eKp,
54
eAp,
55
};
56
57
enum class
EGeoMagneticFluxUpdateMethod
58
{
59
eDaily,
60
e3Hourly,
61
e3HourlyInterp,
62
e3HourlyCubicSpline,
63
};
64
65
enum class
ESunPosition
66
{
67
eTrue,
68
eApparentSunToTrueCB,
69
eApparent,
70
};
71
72
enum class
EShadowModel
73
{
74
eNone,
75
eCylindrical,
76
eDualCone,
77
};
78
80
class
HPOPForceModel
81
{
82
public
:
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
};
138
struct
ThirdBody
139
{
140
// @warning 下面这些参数的相关计算逻辑尚未实现
141
HCelestialBody
body_
;
142
};
143
using
ThirdBodyList = std::vector<ThirdBody>;
144
public
:
145
bool
useDrag_{
false
};
146
bool
useSRP_{
false
};
147
bool
useMoonGravity_{
false
};
148
Gravity
gravity_
;
149
Drag
drag_
;
150
SRP
srp_
;
151
double
moonGravity_{
kMoonGrav
};
152
ThirdBodyList
thirdBodies_
;
153
};
154
155
158
AST_NAMESPACE_END
ast::HPOPForceModel
高精度轨道预报力模型
定义
HPOPForceModel.hpp:81
ast::HPOPForceModel::drag_
Drag drag_
阻力模型
定义
HPOPForceModel.hpp:149
ast::HPOPForceModel::thirdBodies_
ThirdBodyList thirdBodies_
三体引力
定义
HPOPForceModel.hpp:152
ast::HPOPForceModel::gravity_
Gravity gravity_
中心天体重力场
定义
HPOPForceModel.hpp:148
ast::HPOPForceModel::srp_
SRP srp_
太阳辐射压模型
定义
HPOPForceModel.hpp:150
ast::SharedPtr< CelestialBody >
ast::kMoonGrav
constexpr double kMoonGrav
月球引力常数 [m^3/s^2]. (GLGM2)
定义
Constants.h:89
ast::HPOPForceModel::Drag
定义
HPOPForceModel.hpp:101
ast::HPOPForceModel::Gravity
定义
HPOPForceModel.hpp:84
ast::HPOPForceModel::SRP
定义
HPOPForceModel.hpp:124
ast::HPOPForceModel::SRP::eclipsingBodies_
std::vector< HCelestialBody > eclipsingBodies_
遮挡天体列表
定义
HPOPForceModel.hpp:135
ast::HPOPForceModel::ThirdBody
定义
HPOPForceModel.hpp:139
ast::HPOPForceModel::ThirdBody::body_
HCelestialBody body_
天体
定义
HPOPForceModel.hpp:141
src
AstCore
Propagator
HPOP
HPOPForceModel.hpp
制作者
1.12.0