🛰️航天仿真算法库 SpaceAST 0.0.1
载入中...
搜索中...
未找到
ODEVarStepIntegrator.hpp
浏览该文件的文档.
1
20
21#pragma once
22
23#include "AstGlobal.h"
25
26
27AST_NAMESPACE_BEGIN
28
33{
34public:
37 using ODEFixedStepIntegrator::integrate;
38
40 errc_t integrate(ODE& ode, double* y, double& t, double tf) final;
41
43 errc_t integrateStep(ODE& ode, double* y, double& t, double tf) final;
44
46 void setMaxAbsErr(double maxAbsErr){maxAbsErr_ = maxAbsErr;};
48 void setMaxRelErr(double maxRelErr){maxRelErr_ = maxRelErr;};
49
51 void setInitialStepSize(double initialStepSize){setStepSize(initialStepSize);};
52
54 double getLargestStepSize() const;
55
57 double getSmallestStepSize() const;
58
59 using ODEFixedStepIntegrator::getNumSteps;
60protected:
66 bool isErrorMeet(double& absh, const double* y, const double* ynew);
67private:
68 bool useMinStep_;
69 bool useMaxStep_;
70 // bool useFixedStepSize_; ///< 是否使用固定步长
71 bool warnOnMinStep_;
72 int maxStepAttempts_;
73 double minStepSize_;
74 double maxStepSize_;
75 double maxAbsErr_;
76 double maxRelErr_;
77 double minStepScaleFactor_;
78 double maxStepScaleFactor_;
79 double safetyCoeffLow_;
80 double safetyCoeffHigh_;
81 double errCtrPowthLow_;
82 double errCtrPowthHigh_;
83};
84
85AST_NAMESPACE_END
固定步长积分器
定义 ODEFixedStepIntegrator.hpp:34
errc_t integrateStep(ODE &ode, double *y, double &t, double tf) override
定义 ODEFixedStepIntegrator.cpp:186
errc_t integrate(ODE &ode, double *y, double &t, double tf) override
定义 ODEFixedStepIntegrator.cpp:140
void setStepSize(double stepSize)
设置步长
定义 ODEFixedStepIntegrator.hpp:45
可变步长积分器
定义 ODEVarStepIntegrator.hpp:33
void setMaxAbsErr(double maxAbsErr)
设置最大绝对误差
定义 ODEVarStepIntegrator.hpp:46
void setInitialStepSize(double initialStepSize)
设置初始步长
定义 ODEVarStepIntegrator.hpp:51
void setMaxRelErr(double maxRelErr)
设置最大相对误差
定义 ODEVarStepIntegrator.hpp:48
常微分方程基接口
定义 OrdinaryDifferentialEquation.hpp:33