🛰️航天仿真算法库 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 integrateStep(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 ~Workspace();
71 void reset(int dimension, int stage);
72 void clear();
73 public:
76 int stage_;
79 double** KArr_;
80 double* absErrPerLen_;
81 double* ymid_;
83 };
84private:
85 Workspace workspace_;
86 double stepSize_;
87};
88
89AST_NAMESPACE_END
virtual errc_t integrateStep(ODE &ode, double *y, double &t, double tf)=0
积分ODE一步
固定步长积分器工作空间
定义 ODEFixedStepIntegrator.hpp:67
int numSteps_
总步数(统计数据)
定义 ODEFixedStepIntegrator.hpp:74
int dimension_
状态向量维度
定义 ODEFixedStepIntegrator.hpp:75
int stage_
多步法阶数
定义 ODEFixedStepIntegrator.hpp:76
double * ymid_
每步中点状态向量
定义 ODEFixedStepIntegrator.hpp:81
double nextAbsStepSize_
下一步绝对步长,用于步长自适应调整
定义 ODEFixedStepIntegrator.hpp:82
double ** KArr_
多步法中间结果数组
定义 ODEFixedStepIntegrator.hpp:79
double * absErrPerLen_
每步绝对误差数组
定义 ODEFixedStepIntegrator.hpp:80
double smallestStepSize_
最小步长(统计数据)
定义 ODEFixedStepIntegrator.hpp:78
double largestStepSize_
最大步长(统计数据)
定义 ODEFixedStepIntegrator.hpp:77
固定步长积分器
定义 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:83
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