🛰️航天仿真算法库 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 AST_OBJECT(ODEFixedStepIntegrator);
37
38 class Workspace;
41 using ODEIntegrator::integrate;
42
44 double getStepSize() const{ return stepSize_; }
45
47 void setStepSize(double stepSize){ stepSize_ = stepSize; }
48
50 int getNumSteps() const;
51
53 const Workspace& getWorkspace() const{ return workspace_; }
54 Workspace& getWorkspace(){ return workspace_; }
55
57 errc_t integrate(ODE& ode, double* y, double& t, double tf) override;
58
60 errc_t integrateOneStep(ODE& ode, double* y, double& t, double tf) override;
61
62protected:
63 void resetWorkspace(int dimension, int stage);
64public:
66 class Workspace : public ODEWorkspace
67 {
68 public:
69 Workspace();
70
71 Workspace(const Workspace&) = delete;
72 Workspace& operator=(const Workspace&) = delete;
73
74 ~Workspace();
75 void reset(int dimension, int stage);
76 void clear();
77 public:
80 int stage_;
83 double** KArr_;
84 double* absErrPerLen_;
85 double* ymid_;
87 };
88private:
89 Workspace workspace_;
90 double stepSize_;
91};
92
93AST_NAMESPACE_END
virtual errc_t integrateOneStep(ODE &ode, double *y, double &t, double tf)=0
朝目标时刻执行单步积分
固定步长积分器工作空间
定义 ODEFixedStepIntegrator.hpp:67
int numSteps_
总步数(统计数据)
定义 ODEFixedStepIntegrator.hpp:78
int dimension_
状态向量维度
定义 ODEFixedStepIntegrator.hpp:79
int stage_
多步法阶数
定义 ODEFixedStepIntegrator.hpp:80
double * ymid_
每步中点状态向量
定义 ODEFixedStepIntegrator.hpp:85
double nextAbsStepSize_
下一步绝对步长,用于步长自适应调整
定义 ODEFixedStepIntegrator.hpp:86
double ** KArr_
多步法中间结果数组
定义 ODEFixedStepIntegrator.hpp:83
double * absErrPerLen_
每步绝对误差数组
定义 ODEFixedStepIntegrator.hpp:84
double smallestStepSize_
最小步长(统计数据)
定义 ODEFixedStepIntegrator.hpp:82
double largestStepSize_
最大步长(统计数据)
定义 ODEFixedStepIntegrator.hpp:81
固定步长积分器
定义 ODEFixedStepIntegrator.hpp:34
double getStepSize() const
获取步长
定义 ODEFixedStepIntegrator.hpp:44
const Workspace & getWorkspace() const
获取工作空间
定义 ODEFixedStepIntegrator.hpp:53
void setStepSize(double stepSize)
设置步长
定义 ODEFixedStepIntegrator.hpp:47
ODE 积分器
定义 ODEIntegrator.hpp:87
errc_t integrate(ODE &ode, double *y, double &t, double tf, std::vector< double > &xlist, std::vector< std::vector< double > > &ylist)
积分ODE
定义 ODEIntegrator.cpp:49
ODE工作空间
定义 ODEWorkspace.hpp:30