🛰️航天仿真算法库 SpaceAST 0.3.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 BlockDrag;
37class BlockSRP;
38class BlockDerivative;
39class HPOPForceModel;
40
48class AST_CORE_API HPOPEquation : public OrdinaryDifferentialEquation
49{
50public:
53
54 A_DISABLE_COPY(HPOPEquation);
55
56 int getDimension() const final;
57
58 errc_t evaluate(const double* y, double* dy, double t) final;
59
61 void setEpoch(const TimePoint& epoch){ epoch_ = epoch; }
62
64 const BlockDynamicSystem& dynamicSystem() const { return dynamicSystem_; }
65 BlockDynamicSystem& dynamicSystem() { return dynamicSystem_; }
66
72 errc_t initialize(const HPOPForceModel& forceModel, const SpacecraftParam& spacecraftParam, Frame* frame = nullptr);
73public:
74 BlockDrag* dragBlock() const { return dragBlock_; }
75 BlockSRP* srpBlock() const { return srpBlock_; }
76private:
78 void addBlock(FuncBlock* block);
79 void addBlock(BlockDerivative* block);
80 void reset();
81 errc_t initBlocks(const HPOPForceModel& forceModel, const SpacecraftParam &spacecraftParam, Frame* frame);
82private:
83 BlockDynamicSystem dynamicSystem_{};
84 TimePoint epoch_{};
85 BlockDrag* dragBlock_{};
86 BlockSRP* srpBlock_{};
87};
88
89AST_NAMESPACE_END
动力学系统
定义 BlockDynamicSystem.hpp:62
高精度轨道预报方程
定义 HPOPEquation.hpp:49
void setEpoch(const TimePoint &epoch)
设置仿真的参考历元
定义 HPOPEquation.hpp:61
const BlockDynamicSystem & dynamicSystem() const
获取动力学系统
定义 HPOPEquation.hpp:64
常微分方程基接口
定义 OrdinaryDifferentialEquation.hpp:33
virtual int getDimension() const =0
获取微分方程的维度。
virtual errc_t evaluate(const double *y, double *dy, double t)=0
计算常微分方程在给定时间点和状态下的导数。
绝对时间点
定义 TimePoint.hpp:108