🛰️航天仿真算法库 SpaceAST 0.0.1
载入中...
搜索中...
未找到
ODEFixedStepIntegrator.hpp
浏览该文件的文档.
1
20
21#pragma once
22
23#include "AstGlobal.h"
24#include "ODEIntegrator.hpp"
25#include "ODEWorkspace.hpp"
26
27AST_NAMESPACE_BEGIN
28
29
33class AST_MATH_API ODEFixedStepIntegrator : public ODEIntegrator
34{
35public:
36 class Workspace;
39 using ODEIntegrator::integrate;
40
42 double getStepSize() const{ return stepSize_; }
43
45 void setStepSize(double stepSize){ stepSize_ = stepSize; }
46
48 int getNumSteps() const;
49
51 const Workspace& getWorkspace() const{ return workspace_; }
52 Workspace& getWorkspace(){ return workspace_; }
53
55 errc_t integrate(ODE& ode, double* y, double& t, double tf) override;
56
58 errc_t integrateStep(ODE& ode, double* y, double& t, double tf) override;
59
60protected:
61 void resetWorkspace(int dimension, int stage);
62public:
64 class Workspace : public ODEWorkspace
65 {
66 public:
67 Workspace();
68 ~Workspace();
69 void reset(int dimension, int stage);
70 void clear();
71 public:
74 int stage_;
77 double** KArr_;
78 double* absErrPerLen_;
79 double* ymid_;
81 };
82private:
83 Workspace workspace_;
84 double stepSize_;
85};
86
87AST_NAMESPACE_END
virtual errc_t integrateStep(ODE &ode, double *y, double &t, double tf)=0
积分ODE一步
固定步长积分器工作空间
定义 ODEFixedStepIntegrator.hpp:65
int numSteps_
总步数(统计数据)
定义 ODEFixedStepIntegrator.hpp:72
int dimension_
状态向量维度
定义 ODEFixedStepIntegrator.hpp:73
int stage_
多步法阶数
定义 ODEFixedStepIntegrator.hpp:74
double * ymid_
每步中点状态向量
定义 ODEFixedStepIntegrator.hpp:79
double nextAbsStepSize_
下一步绝对步长,用于步长自适应调整
定义 ODEFixedStepIntegrator.hpp:80
double ** KArr_
多步法中间结果数组
定义 ODEFixedStepIntegrator.hpp:77
double * absErrPerLen_
每步绝对误差数组
定义 ODEFixedStepIntegrator.hpp:78
double smallestStepSize_
最小步长(统计数据)
定义 ODEFixedStepIntegrator.hpp:76
double largestStepSize_
最大步长(统计数据)
定义 ODEFixedStepIntegrator.hpp:75
固定步长积分器
定义 ODEFixedStepIntegrator.hpp:34
double getStepSize() const
获取步长
定义 ODEFixedStepIntegrator.hpp:42
const Workspace & getWorkspace() const
获取工作空间
定义 ODEFixedStepIntegrator.hpp:51
void setStepSize(double stepSize)
设置步长
定义 ODEFixedStepIntegrator.hpp:45
ODE 积分器
定义 ODEIntegrator.hpp:81
errc_t integrate(ODE &ode, double *y, double &t, double tf, std::vector< double > &xlist, std::vector< std::vector< double > > &ylist)
积分ODE
定义 ODEIntegrator.cpp:46
ODE工作空间
定义 ODEWorkspace.hpp:30