🛰️航天仿真算法库 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
69 errc_t integrateOneStep(ODE& ode, double* y, double& t, double tf) final;
70
72 void setMaxAbsErr(double maxAbsErr){maxAbsErr_ = maxAbsErr;};
73
75 void setMaxRelErr(double maxRelErr){maxRelErr_ = maxRelErr;};
76
78 void setMaxIterations(int maxIterations){maxStepAttempts_ = maxIterations;};
79 int getMaxIterations() const{return maxStepAttempts_;};
80
82 void setMaxStepSize(double maxStepSize){maxStepSize_ = maxStepSize;};
83 double getMaxStepSize() const{return maxStepSize_;};
84
86 void setMinStepSize(double minStepSize){minStepSize_ = minStepSize;};
87 double getMinStepSize() const{return minStepSize_;};
88
90 void setSafetyCoeffLow(double safetyCoeffLow){safetyCoeffLow_ = safetyCoeffLow;};
91 double getSafetyCoeffLow() const{return safetyCoeffLow_;};
92
94 void setSafetyCoeffHigh(double safetyCoeffHigh){safetyCoeffHigh_ = safetyCoeffHigh;};
95 double getSafetyCoeffHigh() const{return safetyCoeffHigh_;};
96
97
99 void setUseMinStep(bool useMinStep){useMinStep_ = useMinStep;};
100 bool getUseMinStep() const{return useMinStep_;};
101
103 void setUseMaxStep(bool useMaxStep){useMaxStep_ = useMaxStep;};
104 bool getUseMaxStep() const{return useMaxStep_;};
105
107 void setUseFixedStep(bool useFixedStep){useFixedStep_ = useFixedStep;};
108 bool getUseFixedStep() const{return useFixedStep_;};
109
111 void setInitialStepSize(double initialStepSize){setStepSize(initialStepSize);};
112
114 double getLargestStepSize() const;
115
117 double getSmallestStepSize() const;
118
119 using ODEFixedStepIntegrator::getNumSteps;
120protected:
126 bool isErrorMeet(double& absh, const double* y, const double* ynew);
127PROPERTIES:
128 bool useMinStep_;
135 double maxAbsErr_;
136 double maxRelErr_;
143};
144
145AST_NAMESPACE_END
固定步长积分器
定义 ODEFixedStepIntegrator.hpp:34
errc_t integrateOneStep(ODE &ode, double *y, double &t, double tf) override
定义 ODEFixedStepIntegrator.cpp:146
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:142
void setMinStepSize(double minStepSize)
设置最小步长
定义 ODEVarStepIntegrator.hpp:86
void setMaxAbsErr(double maxAbsErr)
设置最大绝对误差
定义 ODEVarStepIntegrator.hpp:72
void setUseMinStep(bool useMinStep)
设置是否使用最小步长
定义 ODEVarStepIntegrator.hpp:99
void setSafetyCoeffHigh(double safetyCoeffHigh)
设置高安全系数
定义 ODEVarStepIntegrator.hpp:94
double minStepScaleFactor_
最小步长缩放因子
定义 ODEVarStepIntegrator.hpp:137
double safetyCoeffHigh_
高安全系数
定义 ODEVarStepIntegrator.hpp:140
void setMaxStepSize(double maxStepSize)
设置最大步长
定义 ODEVarStepIntegrator.hpp:82
void setUseMaxStep(bool useMaxStep)
设置是否使用最大步长
定义 ODEVarStepIntegrator.hpp:103
double maxStepSize_
最大步长
定义 ODEVarStepIntegrator.hpp:134
double safetyCoeffLow_
低安全系数
定义 ODEVarStepIntegrator.hpp:139
int maxStepAttempts_
自适应步长尝试次数
定义 ODEVarStepIntegrator.hpp:132
double errCtrPowthLow_
低误差控制指数
定义 ODEVarStepIntegrator.hpp:141
double minStepSize_
最小步长
定义 ODEVarStepIntegrator.hpp:133
void setSafetyCoeffLow(double safetyCoeffLow)
设置低安全系数
定义 ODEVarStepIntegrator.hpp:90
void setUseFixedStep(bool useFixedStep)
设置是否使用固定步长
定义 ODEVarStepIntegrator.hpp:107
double maxStepScaleFactor_
最大步长缩放因子
定义 ODEVarStepIntegrator.hpp:138
bool useMaxStep_
是否使用最大步长
定义 ODEVarStepIntegrator.hpp:129
bool warnOnMinStep_
是否警告最小步长
定义 ODEVarStepIntegrator.hpp:131
bool useFixedStep_
是否使用固定步长
定义 ODEVarStepIntegrator.hpp:130
double maxAbsErr_
最大绝对误差
定义 ODEVarStepIntegrator.hpp:135
void setInitialStepSize(double initialStepSize)
设置初始步长
定义 ODEVarStepIntegrator.hpp:111
void setMaxIterations(int maxIterations)
设置最大迭代次数
定义 ODEVarStepIntegrator.hpp:78
void setMaxRelErr(double maxRelErr)
设置最大相对误差
定义 ODEVarStepIntegrator.hpp:75
double maxRelErr_
最大相对误差
定义 ODEVarStepIntegrator.hpp:136
常微分方程基接口
定义 OrdinaryDifferentialEquation.hpp:33