|
🛰️航天仿真算法库 SpaceAST 0.0.1
|
#include <ODEIntegrator.hpp>
类 ast::ODEIntegrator 继承关系图:Public 成员函数 | |
| errc_t | initialize (ODE &ode) override |
| errc_t | integrate (ODE &ode, double *y, double &t, double tf, std::vector< double > &xlist, std::vector< std::vector< double > > &ylist) |
| template<typename Func > | |
| errc_t | integrate (int ndim, Func func, double *y, double &t, double tf) |
| void | addEventDetector (ODEEventDetector *detector) |
| template<typename Func > | |
| std::enable_if<!std::is_base_of< ODEEventDetector, typenamestd::remove_pointer< Func >::type >::value, ODEEventDetector * >::type | addEventDetector (Func func) |
| void | removeEventDetector (ODEEventDetector *detector) |
| void | addStateObserver (ODEStateObserver *observer) |
| template<typename Func > | |
| std::enable_if<!std::is_base_of< ODEStateObserver, typenamestd::remove_pointer< Func >::type >::value, ODEStateObserver * >::type | addStateObserver (Func func) |
| void | removeStateObserver (ODEStateObserver *observer) |
| ODE * | getODE () |
| double * | stateAtStepStart () |
| double * | stateAtStepEnd () |
| double & | timeAtStepStart () |
| double & | timeAtStepEnd () |
| double * | stateTemp () |
| virtual errc_t | integrate (ODE &ode, double *y, double &t, double tf)=0 |
Public 成员函数 继承自 ast::IODEIntegrator | |
| virtual errc_t | integrateStep (ODE &ode, double *y, double &t, double tf)=0 |
| virtual errc_t | singleStep (ODE &ode, double *y, double t0, double step)=0 |
Protected 成员函数 | |
| void | initWorkStateObserver () |
| A_DISABLE_COPY (ODEIntegrator) | |
Protected 属性 | |
| ODE * | ode_ {nullptr} |
| ODEStateObserver * | workStateObserver_ {nullptr} |
| ODEEventDetectorList | eventDetectorList_ |
| ODEStateObserverList | stateObserverList_ |
| ODEInnerStateObserver * | innerStateObserver_ {nullptr} |
| double * | stateAtStepStart_ {nullptr} |
| double * | stateAtStepEnd_ {nullptr} |
| double * | stateTemp_ {nullptr} |
| double | timeAtStepStart_ {0.0} |
| double | timeAtStepEnd_ {0.0} |
友元 | |
| class | ODEInnerStateObserver |
ODE 积分器
积分器是ODE求解的基础类,提供了积分ODE的通用接口。
|
inline |
添加事件检测器(泛型模板)
添加一个事件检测器,用于检测ODE的事件
| func | 事件检测函数 |
| void ast::ODEIntegrator::addEventDetector | ( | ODEEventDetector * | detector | ) |
|
inline |
添加状态观察者(泛型模板)
添加一个状态观察者,用于观察ODE的状态
| func | 状态观察函数 |
| void ast::ODEIntegrator::addStateObserver | ( | ODEStateObserver * | observer | ) |
|
inline |
获取ODE方程
获取当前积分器关联的ODE方程
|
overridevirtual |
初始化积分器
初始化积分器,设置ODE的维度和步长等参数
| ode | 常微分方程对象 |
实现了 ast::IODEIntegrator.
被 ast::RK4, ast::RK8, ast::RKCK, ast::RKF45, ast::RKF56, ast::RKF78 , 以及 ast::RKV8 重载.
|
inline |
积分ODE
积分ODE,将积分结果存储在y和t中
| [in] | ndim | ODE的维度 |
| [in] | func | 常微分方程 |
| [in,out] | y | 状态向量 |
| [in,out] | t | 当前时间 |
| [in] | tf | 最终时间 |
|
virtual |
积分ODE
积分ODE,将积分结果存储在y中
| [in] | ode | 常微分方程对象 |
| [in,out] | y | 状态向量 |
| [in,out] | t | 当前时间 |
| [in] | tf | 最终时间 |
实现了 ast::IODEIntegrator.
| errc_t ast::ODEIntegrator::integrate | ( | ODE & | ode, |
| double * | y, | ||
| double & | t, | ||
| double | tf, | ||
| std::vector< double > & | xlist, | ||
| std::vector< std::vector< double > > & | ylist ) |
积分ODE
积分ODE,将积分结果存储在y中 同时将时间点和状态向量存储在xlist和ylist中
| [in] | ode | 常微分方程对象 |
| [in,out] | y | 状态向量 |
| [in,out] | t | 当前时间 |
| [in] | tf | 最终时间 |
| [out] | xlist | 时间点列表 |
| [out] | ylist | 状态向量列表 |
| void ast::ODEIntegrator::removeEventDetector | ( | ODEEventDetector * | detector | ) |
删除事件检测器
删除一个事件检测器
| detector | 事件检测器对象 |
| void ast::ODEIntegrator::removeStateObserver | ( | ODEStateObserver * | observer | ) |
删除状态观察者
删除一个状态观察者
| observer | 状态观察者对象 |
|
inline |
获取当前积分步的结束状态
获取当前积分步的结束状态
|
inline |
获取当前积分步的开始状态
获取当前积分步的开始状态
|
inline |
获取临时状态向量
获取当前积分步的临时状态向量
|
inline |
获取当前积分步的结束时间
获取当前积分步的结束时间
|
inline |
获取当前积分步的开始时间
获取当前积分步的开始时间