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

#include <ODEVarStepIntegrator.hpp>

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

Public 成员函数

errc_t integrate (ODE &ode, double *y, double &t, double tf) final
 
errc_t integrateStep (ODE &ode, double *y, double &t, double tf) final
 
void setMaxAbsErr (double maxAbsErr)
 
void setMaxRelErr (double maxRelErr)
 
void setInitialStepSize (double initialStepSize)
 
double getLargestStepSize () const
 
double getSmallestStepSize () const
 
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)
 
int getNumSteps () const
 
- Public 成员函数 继承自 ast::ODEFixedStepIntegrator
double getStepSize () const
 
void setStepSize (double stepSize)
 
int getNumSteps () const
 
const WorkspacegetWorkspace () const
 
WorkspacegetWorkspace ()
 
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)
 
- Public 成员函数 继承自 ast::ODEIntegrator
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)
 
ODEgetODE ()
 
double * stateAtStepStart ()
 
double * stateAtStepEnd ()
 
double & timeAtStepStart ()
 
double & timeAtStepEnd ()
 
double * stateTemp ()
 
- Public 成员函数 继承自 ast::IODEIntegrator
virtual errc_t singleStep (ODE &ode, double *y, double t0, double step)=0
 

Protected 成员函数

bool isErrorMeet (double &absh, const double *y, const double *ynew)
 
- Protected 成员函数 继承自 ast::ODEFixedStepIntegrator
void resetWorkspace (int dimension, int stage)
 
- Protected 成员函数 继承自 ast::ODEIntegrator
void initWorkStateObserver ()
 
 A_DISABLE_COPY (ODEIntegrator)
 

额外继承的成员函数

- Protected 属性 继承自 ast::ODEIntegrator
ODEode_ {nullptr}
 
ODEStateObserverworkStateObserver_ {nullptr}
 
ODEEventDetectorList eventDetectorList_
 
ODEStateObserverList stateObserverList_
 
ODEInnerStateObserverinnerStateObserver_ {nullptr}
 
double * stateAtStepStart_ {nullptr}
 
double * stateAtStepEnd_ {nullptr}
 
double * stateTemp_ {nullptr}
 
double timeAtStepStart_ {0.0}
 
double timeAtStepEnd_ {0.0}
 

详细描述

可变步长积分器

可变步长积分器每步积分的步长自适应调整,以达到目标误差。

成员函数说明

◆ integrate() [1/3]

template<typename Func >
errc_t ast::ODEIntegrator::integrate ( int ndim,
Func func,
double * y,
double & t,
double tf )
inline

积分ODE

积分ODE,将积分结果存储在y和t中

参数
[in]ndimODE的维度
[in]func常微分方程
[in,out]y状态向量
[in,out]t当前时间
[in]tf最终时间

◆ integrate() [2/3]

errc_t ast::ODEVarStepIntegrator::integrate ( ODE & ode,
double * y,
double & t,
double tf )
finalvirtual

◆ integrate() [3/3]

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状态向量列表

◆ integrateStep()

errc_t ast::ODEVarStepIntegrator::integrateStep ( ODE & ode,
double * y,
double & t,
double tf )
finalvirtual

◆ isErrorMeet()

bool ast::ODEVarStepIntegrator::isErrorMeet ( double & absh,
const double * y,
const double * ynew )
protected

判断是否满足误差要求

参数
absh绝对步长
y当前状态向量
ynew新状态向量
返回
是否满足误差要求

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