🛰️航天仿真算法库 SpaceAST 0.0.1
载入中...
搜索中...
未找到
HPOPForceModel.hpp
浏览该文件的文档.
1
20
21#pragma once
22
23#include "AstGlobal.h"
24#include "AstCore/CelestialBody.hpp"
25#include "AstCore/GravityForce.hpp"
26#include "AstCore/PointMassForce.hpp"
27#include "AstCore/DragForce.hpp"
28#include "AstCore/ThirdBodyForce.hpp"
29#include "AstCore/SolarRadiationPressure.hpp"
30#include "AstCore/RelativityCorrection.hpp"
31#include "AstUtil/Object.hpp"
32#include "AstUtil/ObjectNamed.hpp"
33#include "AstUtil/Constants.h"
34#include "AstUtil/ScopedPtr.hpp"
35#include "AstUtil/ClonePtr.hpp"
36#include <vector>
37
38AST_NAMESPACE_BEGIN
39
48class AST_CORE_API HPOPForceModel: public ObjectNamed
49{
50public:
51 AST_OBJECT(HPOPForceModel)
54
55 using ThirdBodyList = std::vector<ThirdBodyForce>;
56
57 bool useCentralBodyAttraction() const{return useCentralBodyAttraction_;}
58
60 bool useDrag() const{return useDrag_;}
61 void useDrag(bool useDrag){useDrag_ = useDrag;}
62
64 bool useSRP() const{return useSRP_;}
65 void useSRP(bool useSRP){useSRP_ = useSRP;}
66
68 bool useRelativityCorrection() const{return useRelativityCorrection_;}
69 void useRelativityCorrection(bool useRelativityCorrection){useRelativityCorrection_ = useRelativityCorrection;}
70
72 bool useSTM() const{return useSTM_;}
73 void useSTM(bool useSTM){useSTM_ = useSTM;}
74
76 bool useDragSensitivity() const{return useDragSensitivity_;}
77 void useDragSensitivity(bool v){useDragSensitivity_ = v;}
78
80 bool useSRPSensitivity() const{return useSRPSensitivity_;}
81 void useSRPSensitivity(bool v){useSRPSensitivity_ = v;}
82
84 Body* centralBody() const;
86 void setCentralBody(Body* body){centralBody_ = body;}
87
89 DragForce& drag(){return drag_;}
90 const DragForce& drag() const {return drag_;}
91
93 SolarRadiationPressure& srp(){return srp_;}
94 const SolarRadiationPressure& srp() const {return srp_;}
95
98 GravityForce& gravity();
99
102 PointMassForce& pointMass();
103
106 BodyAttraction& bodyAttraction();
107
109 const BodyAttraction& bodyAttraction() const;
110
112 EBodyAttractionType bodyAttractionType() const;
113
117 ThirdBodyForce* addThirdBody(StringView bodyName);
118
121 ThirdBodyForce* addThirdBody(Body* body);
122
124 ThirdBodyForce* addThirdBody(ThirdBodyForce& force);
125
128 ThirdBodyForce* getThirdBody(Body* body);
129
132 ThirdBodyForce* getThirdBody(StringView bodyName);
133
135 const ThirdBodyList& getThirdBodies() const{return thirdBodies_;}
136private:
137 bool useDrag_{false};
138 bool useSRP_{false};
139 bool useRelativityCorrection_{false};
140 bool useCentralBodyAttraction_{true};
141 bool useSTM_{false};
142 bool useDragSensitivity_{false};
143 bool useSRPSensitivity_{false};
144 SharedPtr<Body> centralBody_{};
145 DragForce drag_{};
146 SolarRadiationPressure srp_{};
147 ThirdBodyList thirdBodies_{};
148 ClonePtr<BodyAttraction> bodyAttraction_{};
149
150 bool useMoonGravity_{false};
151 double moonGravity_{kMoonGrav};
152public: // [月球特定的接口,待废弃]
153 bool useMoonGravity() const{return useMoonGravity_;}
154 void useMoonGravity(bool useMoonGravity){useMoonGravity_ = useMoonGravity;}
155 double moonGravity() const{return moonGravity_;}
156 void setMoonGravity(double moonGravity){moonGravity_ = moonGravity;}
157};
158
159
162AST_NAMESPACE_END
天体
定义 CelestialBody.hpp:72
大气阻力模型
定义 DragForce.hpp:69
高精度轨道预报力模型
定义 HPOPForceModel.hpp:49
bool useDrag() const
是否启用阻力模型
定义 HPOPForceModel.hpp:60
bool useSRPSensitivity() const
是否启用SRP综合参数K敏感度预报
定义 HPOPForceModel.hpp:80
SolarRadiationPressure & srp()
获取太阳辐射压模型
定义 HPOPForceModel.hpp:93
bool useSTM() const
是否启用状态转移矩阵预报
定义 HPOPForceModel.hpp:72
const ThirdBodyList & getThirdBodies() const
获取三体引力模型列表
定义 HPOPForceModel.hpp:135
bool useDragSensitivity() const
是否启用弹道系数B敏感度预报
定义 HPOPForceModel.hpp:76
bool useSRP() const
是否启用太阳辐射压模型
定义 HPOPForceModel.hpp:64
void setCentralBody(Body *body)
设置中心天体
定义 HPOPForceModel.hpp:86
DragForce & drag()
获取阻力模型
定义 HPOPForceModel.hpp:89
bool useRelativityCorrection() const
是否启用相对论修正模型
定义 HPOPForceModel.hpp:68
命名对象
定义 ObjectNamed.hpp:36
太阳辐射压力
定义 SolarRadiationPressure.hpp:47
constexpr double kMoonGrav
月球引力常数 [m^3/s^2]. (GLGM2)
定义 Constants.h:105