🛰️航天仿真算法库 SpaceAST 0.0.1
载入中...
搜索中...
未找到
ODEVarStepIntegrator.hpp
浏览该文件的文档.
1
20
21#pragma once
22
23#include "AstGlobal.h"
25
26
27AST_NAMESPACE_BEGIN
28
33{
34public:
35 AST_OBJECT(ODEVarStepIntegrator)
36 AST_PROPERT(useMinStep)
37 AST_PROPERT(useMaxStep)
38 AST_PROPERT(warnOnMinStep)
39 AST_PROPERT(maxStepAttempts)
40 AST_PROPERT(minStepSize)
41 AST_PROPERT(maxStepSize)
42 AST_PROPERT(maxAbsErr)
43 AST_PROPERT(maxRelErr)
44 AST_PROPERT(minStepScaleFactor)
45 AST_PROPERT(maxStepScaleFactor)
46 AST_PROPERT(safetyCoeffLow)
47 AST_PROPERT(safetyCoeffHigh)
48 AST_PROPERT(errCtrPowthLow)
49 AST_PROPERT(errCtrPowthHigh)
50;
51
54 using ODEFixedStepIntegrator::integrate;
55
57 errc_t integrate(ODE& ode, double* y, double& t, double tf) final;
58
60 errc_t integrateStep(ODE& ode, double* y, double& t, double tf) final;
61
63 void setMaxAbsErr(double maxAbsErr){maxAbsErr_ = maxAbsErr;};
64
66 void setMaxRelErr(double maxRelErr){maxRelErr_ = maxRelErr;};
67
69 void setMaxIterations(int maxIterations){maxStepAttempts_ = maxIterations;};
70 int getMaxIterations() const{return maxStepAttempts_;};
71
73 void setMaxStepSize(double maxStepSize){maxStepSize_ = maxStepSize;};
74 double getMaxStepSize() const{return maxStepSize_;};
75
77 void setMinStepSize(double minStepSize){minStepSize_ = minStepSize;};
78 double getMinStepSize() const{return minStepSize_;};
79
81 void setSafetyCoeffLow(double safetyCoeffLow){safetyCoeffLow_ = safetyCoeffLow;};
82 double getSafetyCoeffLow() const{return safetyCoeffLow_;};
83
85 void setSafetyCoeffHigh(double safetyCoeffHigh){safetyCoeffHigh_ = safetyCoeffHigh;};
86 double getSafetyCoeffHigh() const{return safetyCoeffHigh_;};
87
88
90 void setUseMinStep(bool useMinStep){useMinStep_ = useMinStep;};
91 bool getUseMinStep() const{return useMinStep_;};
92
94 void setUseMaxStep(bool useMaxStep){useMaxStep_ = useMaxStep;};
95 bool getUseMaxStep() const{return useMaxStep_;};
96
98 // void setUseFixedStep(bool useFixedStep){useFixedStep_ = useFixedStep;};
99 // bool getUseFixedStep() const{return useFixedStep_;};
100
102 void setInitialStepSize(double initialStepSize){setStepSize(initialStepSize);};
103
105 double getLargestStepSize() const;
106
108 double getSmallestStepSize() const;
109
110 using ODEFixedStepIntegrator::getNumSteps;
111protected:
117 bool isErrorMeet(double& absh, const double* y, const double* ynew);
118PROPERTIES:
119 bool useMinStep_;
121 // bool useFixedStepSize_; ///< 是否使用固定步长
126 double maxAbsErr_;
127 double maxRelErr_;
134};
135
136AST_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:47
可变步长积分器
定义 ODEVarStepIntegrator.hpp:33
double errCtrPowthHigh_
高误差控制指数
定义 ODEVarStepIntegrator.hpp:133
void setMinStepSize(double minStepSize)
设置最小步长
定义 ODEVarStepIntegrator.hpp:77
void setMaxAbsErr(double maxAbsErr)
设置最大绝对误差
定义 ODEVarStepIntegrator.hpp:63
void setUseMinStep(bool useMinStep)
设置是否使用最小步长
定义 ODEVarStepIntegrator.hpp:90
void setSafetyCoeffHigh(double safetyCoeffHigh)
设置高安全系数
定义 ODEVarStepIntegrator.hpp:85
double minStepScaleFactor_
最小步长缩放因子
定义 ODEVarStepIntegrator.hpp:128
double safetyCoeffHigh_
高安全系数
定义 ODEVarStepIntegrator.hpp:131
void setMaxStepSize(double maxStepSize)
设置最大步长
定义 ODEVarStepIntegrator.hpp:73
void setUseMaxStep(bool useMaxStep)
设置是否使用最大步长
定义 ODEVarStepIntegrator.hpp:94
double maxStepSize_
最大步长
定义 ODEVarStepIntegrator.hpp:125
double safetyCoeffLow_
低安全系数
定义 ODEVarStepIntegrator.hpp:130
int maxStepAttempts_
自适应步长尝试次数
定义 ODEVarStepIntegrator.hpp:123
double errCtrPowthLow_
低误差控制指数
定义 ODEVarStepIntegrator.hpp:132
double minStepSize_
最小步长
定义 ODEVarStepIntegrator.hpp:124
void setSafetyCoeffLow(double safetyCoeffLow)
设置低安全系数
定义 ODEVarStepIntegrator.hpp:81
double maxStepScaleFactor_
最大步长缩放因子
定义 ODEVarStepIntegrator.hpp:129
bool useMaxStep_
是否使用最大步长
定义 ODEVarStepIntegrator.hpp:120
bool warnOnMinStep_
是否警告最小步长
定义 ODEVarStepIntegrator.hpp:122
double maxAbsErr_
最大绝对误差
定义 ODEVarStepIntegrator.hpp:126
void setInitialStepSize(double initialStepSize)
设置是否使用固定步长
定义 ODEVarStepIntegrator.hpp:102
void setMaxIterations(int maxIterations)
设置最大迭代次数
定义 ODEVarStepIntegrator.hpp:69
void setMaxRelErr(double maxRelErr)
设置最大相对误差
定义 ODEVarStepIntegrator.hpp:66
double maxRelErr_
最大相对误差
定义 ODEVarStepIntegrator.hpp:127
常微分方程基接口
定义 OrdinaryDifferentialEquation.hpp:33