🛰️航天仿真算法库 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 void setSpacecraftParam(const SpacecraftParam& spacecraftParam);
70
72 const SpacecraftParam& spacecraftParam() const { return spacecraftParam_; }
73
75 errc_t setPropagationFrame(Frame* frame);
76
78 Frame* getPropagationFrame() const;
79
81 Body* getCentralBody() const;
82protected:
84 void addBlock(FuncBlock* block);
85 void addBlock(BlockDerivative* block);
86
87 void clearBlocks();
88 void reset();
89public:
91 errc_t initialize();
92protected:
93 errc_t initializeFromForceModel(const HPOPForceModel& forceModel, const SpacecraftParam& spacecraftParam);
94 errc_t initBlocks(const HPOPForceModel& forceModel, const SpacecraftParam &spacecraftParam);
95private:
96 BlockDynamicSystem dynamicSystem_;
97 TimePoint epoch_{};
98 HPOPForceModel forceModel_{};
99 SpacecraftParam spacecraftParam_{};
100 HFrame propFrame_;
101};
102
103AST_NAMESPACE_END
导数函数块
定义 BlockDerivative.hpp:46
动力学系统
定义 BlockDynamicSystem.hpp:61
天体
定义 CelestialBody.hpp:72
坐标系类
定义 Frame.hpp:60
函数块/功能块
定义 FuncBlock.hpp:41
高精度轨道预报方程
定义 HPOPEquation.hpp:47
HPOPForceModel & forceModel()
获取HPOP力模型
定义 HPOPEquation.hpp:65
const SpacecraftParam & spacecraftParam() const
获取航天器参数
定义 HPOPEquation.hpp:72
void setEpoch(const TimePoint &epoch)
设置仿真的参考历元
定义 HPOPEquation.hpp:58
高精度轨道预报力模型
定义 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:107