🛰️航天仿真算法库 SpaceAST 0.0.1
载入中...
搜索中...
未找到
HPOPEquation.hpp
浏览该文件的文档.
1
20
21#pragma once
22
23#include "AstGlobal.h"
24#include "AstMath/OrdinaryDifferentialEquation.hpp"
25#include "AstCore/BlockDynamicSystem.hpp"
26#include "AstCore/SimTime.hpp"
27#include "AstCore/HPOPForceModel.hpp"
28#include "AstCore/Frame.hpp"
29#include "AstCore/SpacecraftParam.hpp"
30#include <memory>
31
32
33AST_NAMESPACE_BEGIN
34
35class FuncBlock;
36class BlockDerivative;
37class HPOPForceModel;
38
46class AST_CORE_API HPOPEquation : public OrdinaryDifferentialEquation
47{
48public:
50 explicit HPOPEquation(HPOPForceModel&& forceModel);
52
53 int getDimension() const final;
54
55 errc_t evaluate(const double* y, double* dy, double t) final;
56
58 void setEpoch(const TimePoint& epoch){ epoch_ = epoch; }
59
61 errc_t setForceModel(HPOPForceModel&& forceModel);
62 errc_t setForceModel(const HPOPForceModel& forceModel);
63
65 HPOPForceModel& forceModel() { return forceModel_; }
66 const HPOPForceModel& forceModel() const { return forceModel_; }
67
69 const BlockDynamicSystem& dynamicSystem() const { return dynamicSystem_; }
70 BlockDynamicSystem& dynamicSystem() { return dynamicSystem_; }
71
73 void setSpacecraftParam(const SpacecraftParam& spacecraftParam);
74
76 const SpacecraftParam& spacecraftParam() const { return spacecraftParam_; }
77
79 errc_t setPropagationFrame(Frame* frame);
80
82 Frame* getPropagationFrame() const;
83
85 Body* getCentralBody() const;
86protected:
88 void addBlock(FuncBlock* block);
89 void addBlock(BlockDerivative* block);
90
91 void clearBlocks();
92 void reset();
93public:
95 errc_t initialize();
96protected:
97 errc_t initializeFromForceModel(const HPOPForceModel& forceModel, const SpacecraftParam& spacecraftParam);
98 errc_t initBlocks(const HPOPForceModel& forceModel, const SpacecraftParam &spacecraftParam);
99private:
100 BlockDynamicSystem dynamicSystem_;
101 TimePoint epoch_{};
102 HPOPForceModel forceModel_{};
103 SpacecraftParam spacecraftParam_{};
104 HFrame propFrame_;
105};
106
107AST_NAMESPACE_END
导数函数块
定义 BlockDerivative.hpp:46
动力学系统
定义 BlockDynamicSystem.hpp:62
天体
定义 CelestialBody.hpp:72
坐标系抽象基类
定义 Frame.hpp:62
函数块/功能块
定义 FuncBlock.hpp:41
高精度轨道预报方程
定义 HPOPEquation.hpp:47
HPOPForceModel & forceModel()
获取HPOP力模型
定义 HPOPEquation.hpp:65
const SpacecraftParam & spacecraftParam() const
获取航天器参数
定义 HPOPEquation.hpp:76
void setEpoch(const TimePoint &epoch)
设置仿真的参考历元
定义 HPOPEquation.hpp:58
const BlockDynamicSystem & dynamicSystem() const
获取动力学系统
定义 HPOPEquation.hpp:69
高精度轨道预报力模型
定义 HPOPForceModel.hpp:49
常微分方程基接口
定义 OrdinaryDifferentialEquation.hpp:33
virtual int getDimension() const =0
获取微分方程的维度。
virtual errc_t evaluate(const double *y, double *dy, double t)=0
计算常微分方程在给定时间点和状态下的导数。
航天器参数
定义 SpacecraftParam.hpp:34
绝对时间点
定义 TimePoint.hpp:108
SharedPtr< Frame > HFrame
坐标系句柄(handle to frame)
定义 Frame.hpp:158