🛰️航天仿真算法库 SpaceAST 0.0.1
载入中...
搜索中...
未找到
ast::HPOPEquation类 参考

#include <HPOPEquation.hpp>

+ 类 ast::HPOPEquation 继承关系图:

Public 成员函数

 HPOPEquation (const HPOPForceModel &forceModel)
 
int getDimension () const final
 
errc_t evaluate (const double *y, double *dy, double t) final
 
void setEpoch (const TimePoint &epoch)
 
errc_t setForceModel (const HPOPForceModel &forceModel)
 
errc_t setPropagationFrame (Frame *frame)
 
FramegetPropagationFrame () const
 
errc_t initialize ()
 
- Public 成员函数 继承自 ast::OrdinaryDifferentialEquation
A_ALWAYS_INLINE errc_t evaluate (const double t, const double *y, double *dy)
 

Protected 成员函数

void addBlock (FuncBlock *block)
 
void addBlock (BlockDerivative *block)
 
void clearBlocks ()
 
void reset ()
 
errc_t initializeFromForceModel (const HPOPForceModel &forceModel)
 
errc_t initBlocks (const HPOPForceModel &forceModel)
 

Protected 属性

BlockDynamicSystem dynamicSystem_
 
TimePoint epoch_
 
HPOPForceModel forceModel_
 
HFrame propFrame_
 

详细描述

高精度轨道预报方程


该类继承自 OrdinaryDifferentialEquation ,用于求解轨道动力学问题。 其内部包含一个动力学系统 BlockDynamicSystem 动力学系统 BlockDynamicSystem 由多个独立的函数块 FuncBlock 组成。 每个函数块 FuncBlock 负责计算系统的一个或多个状态量或者导数。 函数块之间可以通过输入输出端口进行信号连接,实现复杂的动力学模型。

成员函数说明

◆ evaluate()

errc_t ast::HPOPEquation::evaluate ( const double * y,
double * dy,
double t )
finalvirtual

计算常微分方程在给定时间点和状态下的导数。

为什么将时间作为最后一个参数

  1. 在很多情况下,ODE 系统是自洽系统(时间无关)
  2. 与 Boost.Odeint 库的接口设计保持一致
  3. 与 Julia 语言的ODE求解器设计保持一致
    参数
    y状态向量。
    dy输出导数向量。
    t时间点。
    返回
    错误码。

实现了 ast::OrdinaryDifferentialEquation.

◆ getDimension()

int ast::HPOPEquation::getDimension ( ) const
finalvirtual

获取微分方程的维度。

返回
微分方程的维度。

实现了 ast::OrdinaryDifferentialEquation.

◆ initBlocks()

errc_t ast::HPOPEquation::initBlocks ( const HPOPForceModel & forceModel)
protected
待办事项
这里要根据重力场的配置来获取重力场坐标系
待办事项
这里产生了一次重力场系数复制,有一定的优化空间

◆ setPropagationFrame()

errc_t ast::HPOPEquation::setPropagationFrame ( Frame * frame)

设置预报坐标系

待办事项
这里还需要检查frame是否是准惯性系

该类的文档由以下文件生成: