🛰️航天仿真算法库 SpaceAST 0.3.1
载入中...
搜索中...
未找到
HPOP.hpp
浏览该文件的文档.
1
20
21#pragma once
22
23#include "AstGlobal.h"
24#include "AstUtil/Constants.hpp"
25#include "AstUtil/ScopedPtr.hpp"
26#include "AstUtil/Object.hpp"
27#include "AstUtil/ObjectNamed.hpp"
28#include "AstCore/CelestialBody.hpp"
29#include "AstCore/StateMapper.hpp"
30#include "AstCore/OrbitElement.hpp"
31#include "AstCore/HPOPForceModel.hpp"
32#include "AstCore/SpacecraftParam.hpp"
33#include "AstCore/EventDetector.hpp"
34#include "AstCore/Frame.hpp"
35#include <string>
36#include <vector>
37
38
39AST_NAMESPACE_BEGIN
40
46class HPOPEquation;
47class ODEIntegrator;
48class HPOPForceModel;
49class HPOPStateMapper;
50
63class AST_CORE_API HPOP: public ObjectNamed
64{
65public:
66 AST_OBJECT(HPOP)
67
68 HPOP();
69 ~HPOP();
70public:
72 errc_t setForceModel(HPOPForceModel&& forcemodel);
73 errc_t setForceModel(const HPOPForceModel& forcemodel);
74
76 const HPOPForceModel& forceModel() const;
77
78 void setSpacecraftParam(const SpacecraftParam& spacecraftParam);
79
81 const SpacecraftParam& spacecraftParam() const;
82
84 Frame* propagationFrame() const;
85
87 errc_t setPropagationFrame(Frame* frame);
88
90 void setIntegrator(ODEIntegrator* integrator);
91
93 ODEIntegrator* getIntegrator() const;
94
102 errc_t propagate(const TimePoint& startTime, TimePoint& targetTime, Vector3d& position, Vector3d& velocity);
103 errc_t propagate(const TimePoint& startTime, TimePoint& targetTime, CartState& state){return propagate(startTime, targetTime, state.position(), state.velocity());}
104
105
113 errc_t propagate(const TimePoint& startTime, TimePoint& targetTime, CartState& state, Matrix6d& stm);
114
127 errc_t propagate(const TimePoint& startTime, TimePoint& targetTime,
128 CartState& state, Matrix6d& stm,
129 Vector6d& stateSensWrtDrag, Vector6d& stateSensWrtSRP);
130
132 errc_t initialize();
133
135 StateMapper* stateMapper() const;
136
139 void addEventDetector(EventDetector* eventDetector);
140
144 template<typename Func>
145 typename std::enable_if<!std::is_base_of<EventDetector, typename std::remove_pointer<Func>::type>::value, EventDetector*>::type
147 {
148 EventDetector* detector = new EventDetectorGeneric<Func>(func);
149 addEventDetector(detector);
150 return detector;
151 }
152
154 void clearEventDetectors();
155
157 HPOPEquation* equation() const{return equation_.get();}
158private:
160 HPOPEquation* ensureEquation() const;
161
167 errc_t integrateState(const TimePoint& startTime, TimePoint& targetTime, double* y);
168
169private:
170 HPOPForceModel forceModel_{};
171 SpacecraftParam spacecraftParam_{};
172 HFrame propagationFrame_{};
173
174 mutable ScopedPtr<HPOPEquation> equation_{};
175 mutable SharedPtr<ODEIntegrator> integrator_{};
176 ScopedPtr<HPOPStateMapper> stateMapper_{};
177};
178
179
182AST_NAMESPACE_END
直角坐标
定义 OrbitElement.hpp:53
泛型事件检测器
定义 EventDetector.hpp:110
事件检测基类 事件检测基类,用于检测事件是否发生。 参考orekit的EventDetector类
定义 EventDetector.hpp:39
坐标系抽象基类
定义 Frame.hpp:74
高精度轨道预报方程
定义 HPOPEquation.hpp:49
高精度轨道预报力模型
定义 HPOPForceModel.hpp:49
高精度轨道预报器
定义 HPOP.hpp:64
std::enable_if<!std::is_base_of< EventDetector, typenamestd::remove_pointer< Func >::type >::value, EventDetector * >::type addEventDetector(Func func)
添加事件检测器(泛型模板)
定义 HPOP.hpp:146
HPOPEquation * equation() const
获取高精度轨道预报方程(可能为 nullptr)
定义 HPOP.hpp:157
ODE 积分器
定义 ODEIntegrator.hpp:88
命名对象
定义 ObjectNamed.hpp:36
航天器参数
定义 SpacecraftParam.hpp:34
状态映射器
定义 StateMapper.hpp:39
绝对时间点
定义 TimePoint.hpp:108
SharedPtr< Frame > HFrame
坐标系句柄(handle to frame)
定义 Frame.hpp:182